Condu o macara de depozit prin cod și restivuiește lăzi colorate sub o limită de instrucțiuni atât de strânsă încât cere recursivitate.
Construiește un program din instrucțiuni pentru macara (deplasare la stânga și la dreapta, apucare, lăsare și condiții de culoare) pentru a rearanja containerele cu lăzi în stiva-țintă. Limita de instrucțiuni este strânsă în mod deliberat, așa că te vei baza pe comanda Call, care rulează din nou întregul program de la început; o condiție care eșuează devine cazul de bază care oprește recursivitatea. Există zece niveluri construite manual, de la o singură ladă roșie la un turn de șase lăzi, iar opt dintre ele nu pot fi rezolvate fără Call.
Turnul de trei: trei lăzi roșii stau în containerul 1 și trebuie să ajungă în containerul 2, iar tu poți folosi doar șase instrucțiuni. Scrisă pe larg, fiecare ladă are nevoie de Grab, Right, Drop și Left, adică unsprezece instrucțiuni pentru trei lăzi, chiar și după ce renunți la ultimul Left. Șase nu sunt de ajuns.
Așa că scrie un singur drum și lasă-l să se repete: Grab, If-held roșu, Right, Drop, Left, Call. Acestea sunt șase instrucțiuni. Macaraua apucă o ladă, verifică dacă ține una roșie, o duce dincolo, o lasă jos, se întoarce și apelează din nou tot programul. La al patrulea apel containerul 1 este gol, Grab nu apucă nimic, verificarea If-held roșu eșuează și programul se oprește. Acea verificare eșuată este cazul de bază.
Schimbă If-held roșu în If-held albastru și aceleași șase instrucțiuni rezolvă și nivelul cu patru lăzi, și turnul de șase lăzi, pentru că rutina nu numără niciodată lăzile; continuă până nu mai rămâne niciuna. Acesta este rostul recursivității: programul descrie un pas și o regulă de oprire, iar datele de intrare decid de câte ori rulează.
Claw Compiler predă recursivitatea printr-o macara care stivuiește lăzi și un buget strict de mutări, făcând concretă o idee dificilă.
Instrucțiunile macaralei — deplasare la stânga și la dreapta, apucare, lăsare și condiții de culoare — sunt un limbaj de asamblare minimal cu un corp fizic atașat.
Predarea programării printr-un robot mic într-o lume mică pornește de la Karel the Robot, limbajul pentru începători pe care Richard Pattis l-a introdus într-o carte din 1981 și l-a folosit la cursurile sale de la Stanford. Jocurile au preluat ideea: Lightbot predă buclele și procedurile prin programarea unui robot printr-un labirint, iar cel mai apropiat strămoș al lui Claw Compiler este Cargo-Bot, un puzzle pentru iPad din 2012 în care înveți un robot să mute lăzi. Two Lives Left l-a creat împreună cu Rui Viana, pornind de la prototipul acestuia din aplicația lor de programare pentru iPad Codea, și l-a prezentat drept primul joc programat în întregime pe un iPad.
Sarcina, rearanjarea containerelor de lăzi într-o stivă-țintă, este sortare făcută de o mașină care poate ține exact un singur lucru odată. Această limită a unui singur apucător este o lecție în sine. Este aceeași constrângere pe care o impune un registru, și de aceea sortarea reală are nevoie de un loc unde să pui lucrurile jos — a descoperi că ai nevoie de un container de rezervă înseamnă a descoperi ideea de stocare temporară.
Pentru că Call este întotdeauna ultima instrucțiune, fiecare program de aici este recursiv la coadă: autoapelul este ultimul lucru pe care îl face. Multe implementări de limbaje transformă un apel la coadă într-un simplu salt înapoi la început, motiv pentru care același program poate fi citit fie ca recursivitate, fie ca buclă. A vedea că cele două sunt o singură idee reprezintă o mare parte din înțelegerea recursivității.
Claw Compiler este un joc original și gratuit pentru browser, realizat pentru PlayPendium: un limbaj de macara cu șapte instrucțiuni, zece niveluri ale căror limite fac recursivitatea necesară, nu opțională, un nivel zilnic comun și un mod de antrenament care le oferă pe celelalte.