Final functor

ウィキペディアから