Фон
Візуалізація термінів λ-числення
Відомий лямбда-жонглер (та гольфіст з кодом ) Джон Тромп винайшов цікаву візуалізацію термінів у λ-обчисленні. З його слів:
абстракції (лямбда) представлені горизонтальними лініями, змінні вертикальними лініями, що виходять вниз від їх зв'язування лямбда, а додатки - горизонтальними зв'язками, що з'єднують крайні ліві змінні.
Наприклад, лямбда-термін λf.λx.f (f (f (fx))) відповідає візуалізації:
-------------------
| | | |
-------------------
| | | | |
| | | |----
| | |----
| |----
|----
|
Прочитайте його зверху вниз:
- Перша горизонтальна лінія являє собою першу λ.
- Чотири лінії низхідній від нього представляє е s в тілі.
- Аналогічно, друга горизонтальна лінія являє собою другу λ, а одиночна нова лінія, що сходить від неї, представляє х у тілі.
- Найправіша лінія f та лінія x з'єднані горизонтальною лінією, що представляє додаток (f x) .
- Наступним додатком є (f (f x)) , і так далі.
Церковні цифри
У позиції Церкви представляють собою специфічну послідовність термінів в Х-обчисленні, приймаючи на наступною схемою:
0 = λf. λx. x
1 = λf. λx. f x
2 = λf. λx. f (f x)
3 = λf. λx. f (f (f x))
...
Завдання
Враховуючи номер введення n , надрукуйте деяке мистецтво ASCII, яке візуалізує n- й церковний номер. Наприклад, приклад вище - ваш цільовий вихід, коли задано n = 4 . Для n = 0 друкуйте:
---
---
|
|
Тестові справи
Ваша відповідь повинна виводити абсолютно такий самий текст (модульний трейлінг нових рядків), як цей фрагмент стека для всіх цілих входів n ≥ 0 :
Це є код-гольф, тому виграє найкоротший код у байтах.
.repeat
.