tricu

An interpreted language for exploring Tree Calculus
Log | Files | Refs | README | LICENSE

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