Hintergrund
Visualisierung von λ-Kalkülbegriffen
Der berühmte Lambda-Jongleur (und Code-Golfer ) John Tromp entwickelte eine interessante Visualisierung von Begriffen im λ-Kalkül. In seinen Worten:
Abstraktionen (Lambdas) werden durch horizontale Linien dargestellt, Variablen durch vertikale Linien, die von ihrem Bindungs-Lambda ausgehen, und Anwendungen durch horizontale Verknüpfungen, die die Variablen ganz links verbinden.
Zum Beispiel entspricht der Lambda-Term λf.λx.f (f (f (fx))) der Visualisierung:
-------------------
| | | |
-------------------
| | | | |
| | | |----
| | |----
| |----
|----
|
Lesen Sie es von oben nach unten:
- Die erste horizontale Linie repräsentiert das erste λ.
- Die vier davon absteigenden Linien repräsentieren die fs im Körper.
- In ähnlicher Weise repräsentiert die zweite horizontale Linie das zweite λ, und die einzelne neue Linie, die von ihr absteigt, repräsentiert das x im Körper.
- Die f- Linie ganz rechts und die x- Linie sind durch eine horizontale Linie verbunden, die eine Anwendung darstellt (f x) .
- Die nächste Anwendung ist (f (f x)) usw.
Kirchenzahlen
Die Kirchenzahlen sind eine bestimmte Folge von Begriffen im λ-Kalkül, die das folgende Muster annehmen:
0 = λf. λx. x
1 = λf. λx. f x
2 = λf. λx. f (f x)
3 = λf. λx. f (f (f x))
...
Aufgabe
Drucken Sie bei einer eingegebenen Nummer n eine ASCII-Grafik, die die n- te Kirchennummer darstellt. Das obige Beispiel ist beispielsweise Ihre Zielausgabe, wenn n = 4 angegeben ist . Für n = 0 drucken Sie:
---
---
|
|
Testfälle
Ihre Antwort muss für alle ganzzahligen Eingaben n ≥ 0 genau den gleichen Text (Modulo-Trailing Newlines) wie dieses Stack-Snippet ausgeben :
Dies ist Code-Golf , also gewinnt der kürzeste Code in Bytes.
.repeat
.