tricu

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

sourceModuleEndToEnd.tri (2364B)


      1 !import "source.module" !Local
      2 !import "io" !Local
      3 !import "prelude" !Local
      4 root = "__ROOT__"
      5 
      6 moduleSay text = mapIO (putStr text) (_ : ok t t)
      7 
      8 moduleCheck condition =
      9   pure (if condition (ok t t) (err "wrong executable tree" t))
     10 
     11 moduleScenario = do onOk_
     12   sourceBase <- readFile "demos/modules/base.tri"
     13   base <- sourceModuleBuild root sourceBase
     14   escaped <- sourceModuleLoadSelected root base "perc%ent"
     15   _ <- moduleCheck (equal? escaped 7)
     16   _ <- moduleSay (append "module-base=" (append base "\n"))
     17   _ <- sourceModulePinAlias root "base" base
     18   sourcePrelude <- readFile "demos/modules/prelude.tri"
     19   prelude <- sourceModuleBuild root sourcePrelude
     20   _ <- sourceModulePinAlias root "prelude" prelude
     21   sourceApp <- readFile "demos/modules/app.tri"
     22   app <- sourceModuleBuild root sourceApp
     23   tree <- sourceModuleLoadSelected root app "main"
     24   _ <- moduleCheck (equal? tree 42)
     25   sourceOpen <- readFile "demos/modules/open.tri"
     26   open <- sourceModuleBuild root sourceOpen
     27   opened <- sourceModuleLoadSelected root open "main"
     28   _ <- moduleCheck (equal? opened 42)
     29   public <- sourceModuleLoadSelected root prelude "answer"
     30   _ <- moduleCheck (equal? public 42)
     31   _ <- moduleSay (append "module-42=" (append app "\n"))
     32   sourceRevision <- readFile "demos/modules/revised.tri"
     33   _ <- moduleSay "revision-read\n"
     34   revised <- onResult_ (sourceModuleBuild root sourceRevision)
     35     (_ : pure (err "revision build" t))
     36     (value : pure (ok value t))
     37   _ <- moduleSay (append "module-revised=" (append revised "\n"))
     38   _ <- moduleSay "revised-built\n"
     39   _ <- sourceModulePinAlias root "base" revised
     40   _ <- moduleSay "revised-aliased\n"
     41   oldTree <- sourceModuleLoadSelected root app "main"
     42   _ <- moduleCheck (equal? oldTree 42)
     43   _ <- moduleSay "old-pinned-ok\n"
     44   newPrelude <- sourceModuleBuild root sourcePrelude
     45   _ <- moduleSay (append "module-prelude43=" (append newPrelude "\n"))
     46   _ <- moduleSay "new-prelude-built\n"
     47   _ <- sourceModulePinAlias root "prelude" newPrelude
     48   updated <- sourceModuleBuild root sourceApp
     49   updatedTree <- sourceModuleLoadSelected root updated "main"
     50   _ <- moduleCheck (equal? updatedTree 43)
     51   _ <- moduleSay (append "module-43=" (append updated "\n"))
     52   pure (ok t t)
     53 
     54 main = io (onResult_ moduleScenario
     55   (problem : putStrLn (append "module scenario failed: " problem))
     56   (_ : putStrLn "module-scenario-ok"))
     57 main