Pilotez une grue d'entrepôt par le code et réempilez des caisses colorées sous une limite d'instructions assez stricte pour exiger la récursivité.
Construisez un programme à partir des instructions de la grue (se déplacer à gauche et à droite, saisir, lâcher, et conditions de couleur) pour réorganiser les bacs de caisses en la pile cible. La limite d'instructions est volontairement serrée, vous vous appuierez donc sur la commande Call, qui réexécute tout votre programme depuis le début ; une condition qui échoue devient le cas de base qui arrête la récursion. Il y a dix niveaux conçus à la main, d'une seule caisse rouge à une tour de six caisses, et huit d'entre eux sont impossibles à résoudre sans Call.
Tour de trois : trois caisses rouges se trouvent dans le bac 1 et doivent finir dans le bac 2, et vous n'avez droit qu'à six instructions. Écrite en toutes lettres, chaque caisse demande Grab, Right, Drop et Left, soit onze instructions pour trois caisses, même en supprimant le dernier Left. Six ne suffisent pas.
Écrivez donc un seul trajet et laissez-le se répéter : Grab, If-held rouge, Right, Drop, Left, Call. Cela fait six instructions. La grue saisit une caisse, vérifie qu'elle tient bien une rouge, la transporte, la pose, revient et rappelle tout le programme. Au quatrième appel, le bac 1 est vide, Grab ne saisit rien, le test If-held rouge échoue et le programme s'arrête. Ce test qui échoue est le cas de base.
Remplacez If-held rouge par If-held bleu et les mêmes six instructions résolvent aussi le niveau à quatre caisses et la tour de six, car la routine ne compte jamais les caisses : elle continue jusqu'à ce qu'il n'en reste plus. C'est tout l'intérêt de la récursivité : le programme décrit une étape et une règle d'arrêt, et c'est l'entrée qui décide combien de fois il s'exécute.
Claw Compiler enseigne la récursivité grâce à une grue qui empile des caisses et à un budget de déplacements strict, rendant concrète une idée difficile.
Les instructions de la grue — se déplacer à gauche et à droite, saisir, lâcher, et des conditions sur la couleur — forment un langage d'assemblage minimal doté d'un corps physique.
Enseigner la programmation à l'aide d'un petit robot dans un petit monde remonte à Karel the Robot, le langage pour débutants que Richard Pattis présenta dans un livre de 1981 et utilisa dans ses cours à Stanford. Les jeux ont repris l'idée : Lightbot enseigne les boucles et les procédures en programmant un robot à travers un labyrinthe, et l'ancêtre le plus proche de Claw Compiler est Cargo-Bot, un puzzle pour iPad de 2012 dans lequel on apprend à un robot à déplacer des caisses. Two Lives Left l'a conçu avec Rui Viana à partir du prototype de celui-ci, réalisé dans Codea, son application de programmation pour iPad, et l'a présenté comme le premier jeu entièrement programmé sur un iPad.
La tâche, réorganiser des bacs de caisses en une pile cible, est un tri effectué par une machine qui ne peut tenir qu'une seule chose à la fois. Cette limite d'une seule pince est une leçon en soi. C'est la même contrainte qu'impose un registre, et c'est pourquoi un vrai tri a besoin d'un endroit où poser les choses — découvrir qu'il vous faut un bac de rechange, c'est découvrir l'idée de stockage temporaire.
Comme Call est toujours la dernière instruction, chaque programme du jeu est récursif terminal : l'appel à soi-même est la dernière chose qu'il fait. De nombreuses implémentations de langages transforment un appel terminal en un simple saut vers le début, et c'est pourquoi le même programme peut se lire soit comme une récursion, soit comme une boucle. Voir que les deux sont une seule et même idée, c'est une grande partie de la compréhension de la récursivité.
Claw Compiler est un jeu par navigateur original et gratuit créé pour PlayPendium : un langage de grue à sept instructions, dix niveaux dont les limites rendent la récursivité nécessaire plutôt que facultative, un niveau quotidien commun et un mode entraînement qui distribue les autres.