letfn via Y* combinator