On 27 May 2016 at 10:42, Kjell Godo <squeaklist@gmail.com> wrote:
Object>>recurse: aZeroInputValuable"ThatReturnsATwoInputValuable"

^( aZeroInputValuable value
 ) value:( self )value:[ :anObject | anObject recurse: aZeroInputValuable ]

"Object>>recurse:

does for recursion what >>do: does for iteration

it enables any Object O to do recursion
Without writing a new recursive method in the Class of O

Yep. Unless my eyes deceive me, that's the Y combinator. You can see a more classically academic implementation at https://rosettacode.org/wiki/Y_combinator#Smalltalk

frank