Guida con il codice una gru da magazzino e reimpila casse colorate entro un limite di istruzioni abbastanza stretto da richiedere la ricorsione.
Costruisci un programma con le istruzioni della gru (spostarsi a sinistra e a destra, afferrare, rilasciare e condizioni sul colore) per riordinare i contenitori di casse fino a formare la pila obiettivo. Il limite di istruzioni è volutamente stretto, quindi dovrai appoggiarti al comando Call, che riesegue l'intero programma dall'inizio; una condizione che fallisce diventa il caso base che interrompe la ricorsione. Ci sono dieci livelli costruiti a mano, da una sola cassa rossa a una torre di sei casse, e otto di questi non si possono risolvere senza Call.
Torre di tre: tre casse rosse si trovano nel contenitore 1 e devono finire nel contenitore 2, e puoi usare solo sei istruzioni. Scritta per esteso, ogni cassa richiede Grab, Right, Drop e Left: undici istruzioni per tre casse, anche togliendo l'ultimo Left. Sei non bastano.
Scrivi quindi un solo viaggio e lascia che si ripeta: Grab, If-held rosso, Right, Drop, Left, Call. Sono sei istruzioni. La gru afferra una cassa, controlla di tenerne una rossa, la porta dall'altra parte, la posa, torna indietro e richiama l'intero programma. Alla quarta chiamata il contenitore 1 è vuoto, Grab non prende nulla, il controllo If-held rosso fallisce e il programma si ferma. Quel controllo che fallisce è il caso base.
Cambia If-held rosso in If-held blu e le stesse sei istruzioni risolvono anche il livello a quattro casse e la torre di sei, perché la routine non conta mai le casse: continua finché non ne resta nessuna. È questo il senso della ricorsione: il programma descrive un passo e una regola di arresto, e l'input decide quante volte viene eseguito.
Claw Compiler insegna la ricorsione attraverso una gru che impila casse e un budget di mosse rigoroso, rendendo concreta un'idea difficile.
Le istruzioni della gru (spostarsi a sinistra e a destra, afferrare, rilasciare, e condizioni sul colore) sono un linguaggio assembly minimo dotato di un corpo fisico.
Insegnare la programmazione attraverso un piccolo robot in un piccolo mondo risale a Karel the Robot, il linguaggio per principianti che Richard Pattis presentò in un libro del 1981 e usò nei suoi corsi a Stanford. I giochi hanno ripreso l'idea: Lightbot insegna cicli e procedure programmando un robot attraverso un labirinto, e l'antenato più vicino di Claw Compiler è Cargo-Bot, un rompicapo per iPad del 2012 in cui si insegna a un robot a spostare casse. Two Lives Left lo realizzò con Rui Viana a partire dal prototipo di quest'ultimo in Codea, la sua app di programmazione per iPad, e lo presentò come il primo gioco programmato interamente su un iPad.
Il compito, riordinare contenitori di casse in una pila bersaglio, è un ordinamento eseguito da una macchina che può tenere esattamente una cosa alla volta. Quel limite di una sola pinza è una lezione a sé. È lo stesso vincolo che impone un registro, ed è il motivo per cui un vero ordinamento ha bisogno di un posto dove appoggiare le cose: scoprire che serve un contenitore libero significa scoprire l'idea di memoria temporanea.
Poiché Call è sempre l'ultima istruzione, ogni programma qui è ricorsivo in coda: la chiamata a se stesso è l'ultima cosa che fa. Molte implementazioni dei linguaggi trasformano una chiamata in coda in un semplice salto all'inizio, ed è per questo che lo stesso programma si può leggere sia come ricorsione sia come ciclo. Capire che sono la stessa idea è buona parte della comprensione della ricorsione.
Claw Compiler è un gioco per browser originale e gratuito realizzato per PlayPendium: un linguaggio per gru di sette istruzioni, dieci livelli i cui limiti rendono la ricorsione necessaria anziché facoltativa, un livello giornaliero condiviso e una modalità di pratica che propone gli altri.