size.tri (1083B)
1 !import prelude * 2 !import io * 3 !import consumers_source_worker as Source 4 !import consumers_lexical_worker as L 5 !export * 6 -- Run from repository root with --io, --allow-read demos/consumers/lessons, 7 -- and --allow-read lib/consumer. 8 9 load path initial = Source.loadSource path initial 10 lesson name = append "demos/consumers/lessons/size/" (append name ".scp") 11 base name = append "lib/consumer/" (append name ".scp") 12 -- The worker returns an ordinary compact tricu number; this only prints it. 13 showSize worker label input = putStrLn (append label 14 (matchResult 15 (problem _ : append "ERROR: " problem) 16 (number _ : showNumber number) 17 (L.lRunChecked worker input))) 18 run = do onOk_ 19 successor <- load (base "succ") t 20 adder <- load (base "add") (pair false successor) 21 sizeWorker <- load (lesson "tree-size") (pair successor adder) 22 thenIO (showSize sizeWorker "Leaf: " t) 23 (thenIO (showSize sizeWorker "Stem Leaf: " (t t)) 24 (thenIO (showSize sizeWorker "Fork Leaf Leaf: " (t t t)) 25 (showSize sizeWorker "Compiled worker itself: " sizeWorker))) 26 main = io run