<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 27 May 2016 at 10:42, Kjell Godo <span dir="ltr">&lt;<a href="mailto:squeaklist@gmail.com" target="_blank">squeaklist@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Object&gt;&gt;recurse: aZeroInputValuable&quot;ThatReturnsATwoInputValuable&quot;<div><br></div><div>^( aZeroInputValuable value<br><div> ) value:( self )value:[ :anObject | anObject recurse: aZeroInputValuable ]<br></div><div><br></div><div>&quot;Object&gt;&gt;recurse:</div><div><br></div><div>does for recursion what &gt;&gt;do: does for iteration</div><div><br></div><div>it enables any Object O to do recursion</div><div>Without writing a new recursive method in the Class of O</div><div></div></div></blockquote></div><br></div><div class="gmail_extra">Yep. Unless my eyes deceive me, that&#39;s the Y combinator. You can see a more classically academic implementation at <a href="https://rosettacode.org/wiki/Y_combinator#Smalltalk">https://rosettacode.org/wiki/Y_combinator#Smalltalk</a></div><div class="gmail_extra"><br></div><div class="gmail_extra">frank</div></div>