/ test.ml
test.ml
 1  (fn let =>
 2      let (fn query => (println query).bind fn x => input) fn ask =>
 3      (ask "Give me your name").bind fn name =>
 4          (ask "Give me your birthdate").bind fn bd => ((println name).bind fn x => println bd)
 5  ) (fn x => fn f => f x)
 6  
 7  (println "Foo").bind fn x => println "Bar"
 8  
 9  (fn x => fn y => fn z => y) (println "X: Should not run") (println "Y: Should run") (println "Z: Should not run")
10  
11  (fn let =>
12      let "foo" fn x =>
13      let (fn query => (println query).bind fn x => input) fn ask =>
14      (ask "Give me your name").bind fn name =>
15          (print "Hello ").bind fn a => println name
16  ) (fn x => fn f => f x)
17  
18  (fn ask =>
19      (ask "Give me your name").bind fn name =>
20          (print "Hello ").bind fn a => println name
21  ) (fn query => (println query).bind fn x => input)
22  
23  (input ()).bind fn i =>
24      (print "Hello").bind fn x =>
25          (print " World! ").bind fn y =>
26              (println i).bind fn z =>
27                  (println "How are you?").bind fn w => input