improved derivation of y combinator