mapWith
object fun
Y combinator