Contexte
Visualisation des termes λ-calcul
Le célèbre jongleur lambda (et golfeur de code ) John Tromp a imaginé une visualisation intéressante des termes du λ-calcul. Dans ses mots:
les abstractions (lambdas) sont représentées par des lignes horizontales, les variables par des lignes verticales émanant de leur lambda de liaison et les applications par des liens horizontaux reliant les variables les plus à gauche.
Par exemple, le terme lambda λf.λx.f (f (f (fx))) correspond à la visualisation:
-------------------
| | | |
-------------------
| | | | |
| | | |----
| | |----
| |----
|----
|
Lisez-le de haut en bas:
- La première ligne horizontale représente le premier λ.
- Les quatre lignes qui en descendent représentent les f s dans le corps.
- De même, la deuxième ligne horizontale représente le deuxième λ, et la seule nouvelle ligne en descendant représente le x dans le corps.
- La ligne f la plus à droite et la ligne x sont reliées par une ligne horizontale représentant une application (f x) .
- L'application suivante est (f (f x)) , et cetera.
Chiffres d'église
Les chiffres de l'Église sont une séquence spécifique de termes dans le λ-calcul, prenant le modèle suivant:
0 = λf. λx. x
1 = λf. λx. f x
2 = λf. λx. f (f x)
3 = λf. λx. f (f (f x))
...
Tâche
Étant donné un numéro d'entrée n , imprimez un art ASCII qui visualise le n e chiffre de l'Église. Par exemple, l'exemple ci-dessus est votre sortie cible lorsque n = 4 . Pour n = 0 , imprimez:
---
---
|
|
Cas de test
Votre réponse doit générer exactement le même texte (sauts de ligne modulo) que cet extrait de pile pour toutes les entrées entières n ≥ 0 :
Il s'agit de code-golf , donc le code le plus court en octets l'emporte.
.repeat
.