sfondo
Visualizzazione dei termini λ-calcolo
Il famoso giocoliere lambda (e golfista di codice ) John Tromp ha ideato un'interessante visualizzazione dei termini nel calcolo λ. Nelle sue parole:
le astrazioni (lambda) sono rappresentate da linee orizzontali, variabili da linee verticali che scendono dalla loro lambda vincolante e applicazioni da collegamenti orizzontali che collegano le variabili più a sinistra.
Ad esempio, il termine lambda λf.λx.f (f (f (fx))) corrisponde alla visualizzazione:
-------------------
| | | |
-------------------
| | | | |
| | | |----
| | |----
| |----
|----
|
Leggi dall'alto verso il basso:
- La prima linea orizzontale rappresenta la prima λ.
- Le quattro linee discendenti da essa rappresentano le f nel corpo.
- Allo stesso modo, la seconda linea orizzontale rappresenta la seconda λ e la singola nuova linea che discende da essa rappresenta la x nel corpo.
- La linea f più a destra e la linea x sono collegate da una linea orizzontale che rappresenta un'applicazione (f x) .
- La prossima applicazione è (f (f x)) , eccetera.
Numeri della chiesa
I numeri della Chiesa sono una sequenza specifica di termini nel calcolo λ, assumendo il seguente schema:
0 = λf. λx. x
1 = λf. λx. f x
2 = λf. λx. f (f x)
3 = λf. λx. f (f (f x))
...
Compito
Dato un numero di ingresso n , stampare alcune ASCII art che visualizza il n ° Chiesa numerico. Ad esempio, l'esempio sopra è l'output target quando viene dato n = 4 . Per n = 0 , stampa:
---
---
|
|
Casi test
La tua risposta deve generare esattamente lo stesso testo (modulo trailing newline) di questo frammento di stack per tutti gli input interi n ≥ 0 :
Questo è code-golf , quindi vince il codice più breve in byte.
.repeat
.