fundo
Visualização de termos do cálculo λ
O famoso lambda-malabarista (e jogador de código ) John Tromp criou uma visualização interessante dos termos no λ-cálculo. Nas suas palavras:
abstrações (lambdas) são representadas por linhas horizontais, variáveis por linhas verticais que emanam de sua lambda de ligação e aplicativos por links horizontais conectando as variáveis mais à esquerda.
Por exemplo, o termo lambda λf.λx.f (f (f (fx))) corresponde à visualização:
-------------------
| | | |
-------------------
| | | | |
| | | |----
| | |----
| |----
|----
|
Leia de cima para baixo:
- A primeira linha horizontal representa o primeiro λ.
- As quatro linhas descendentes representam os f s no corpo.
- Da mesma forma, a segunda linha horizontal representa o segundo λ e a única nova linha que desce dela representa o x no corpo.
- A linha f mais à direita e a linha x são conectadas por uma linha horizontal que representa um aplicativo (f x) .
- A próxima aplicação é (f (f x)) , etc.
Numerais da igreja
Os numerais da igreja são uma sequência específica de termos no cálculo λ, assumindo o seguinte padrão:
0 = λf. λx. x
1 = λf. λx. f x
2 = λf. λx. f (f x)
3 = λf. λx. f (f (f x))
...
Tarefa
Dado um número de entrada n , imprima algumas artes ASCII que visualizem o n- ésimo número da Igreja. Por exemplo, o exemplo acima é o resultado desejado quando dado n = 4 . Para n = 0 , imprima:
---
---
|
|
Casos de teste
Sua resposta deve gerar exatamente o mesmo texto (novas linhas à direita do módulo) que esse snippet de pilha para todas as entradas inteiras n ≥ 0 :
Isso é código-golfe , então o código mais curto em bytes vence.
.repeat
.