({<(<({})(<({}){}>){}>){}>}){(({}){(){}(((<><<>()>){})[{}{<({}){}>}])}{})}{}
Can be run with the interpreter as follows:
$ ./Flurry -bnn -c "$pgm"
**********
**********
**********
**********
**********
**********
**********
**********
**********
**********
Explanation
A function that composes two functions (or multiplies two numbers):
comp = λf g x. f (g x)
= λf g x. K f x (g x)
= λf g x. S (K f) g x
= λf. S (K f)
= S ∘ K
:= <<>()>
A function that increments a number by one:
succ = λn f x. f (n f x)
= λn f. comp f (n f)
= λn f. S comp n f
= S comp
:= <><<>()>
A function that computes n(n + 1)
:
oblong = λn. n * succ n
= λn. comp n [succ n]
= λn. S comp succ n
= succ succ
:= <><<>()> [<><<>()]
:= (<><<>()>) {}
The number two:
2 = λf x. f (f x)
= λf. <f f>
:= {<({}){}>}
The number six:
6 = 2 * 3
= 2 * succ 2
= oblong 2
:= oblong {<({}){}>}
:= (<><<>()>){} {<({}){}>}
The number 42 (ASCII value of *
):
42 = 6 * 7
= 6 * succ 6
= oblong 6
= oblong (oblong 2)
:= (oblong) [{} 2]
:= ((<><<>()>){}) [{} 2]
:= ((<><<>()>){}) [{} {<({}){}>}]
The number 10:
10 = λf x. f (f (f (f (f (f (f (f (f (f x)))))))))
= λf. f ∘ f ∘ f ∘ f ∘ f ∘ f ∘ f ∘ f ∘ f ∘ f
= λf. push (f ∘ f ∘ f ∘ f ∘ f) ∘ pop
= λf. push (f ∘ push (f ∘ f) ∘ pop) ∘ pop
= λf. push (push f ∘ push (push pop ∘ pop) ∘ pop) ∘ pop
:= {< ( < ({}) ( < ({}) {}>) {}>) {}>}
:= {<(<({})(<({}){}>){}>){}>}
A function that pushes 42 to the stack and returns its argument:
push_star = λx. (push 42; x)
= λx. K x (push 42)
:= {() {} (42)}
:= {() {} (((<><<>()>){})[{}{<({}){}>}])}
A function that takes the number 10 and then pushes ten copies of 42, followed by 10, and returns 10:
push_row = λn. push (n push_star n)
:= { (({}) push_star {}) }
:= { (({}) {(){}(((<><<>()>){})[{}{<({}){}>}])} {}) }
Applying push_row
10 times to the number 10:
main () = 10 push_row 10
= (push 10) push_row pop
:= (10) push_row {}
:= ({<(<({})(<({}){}>){}>){}>}){(({}){(){}(((<><<>()>){})[{}{<({}){}>}])}{})}{}