tricu

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

consumer_summary_phases.tri (2644B)


      1 -- Markers for a cold, verified-source summary workload. Host timing measures
      2 -- intervals between IO markers, not isolated reducer steps.
      3 !import "prelude" !Local
      4 !import "io" !Local
      5 !import "consumers.module" M
      6 !import "consumers.link" CL
      7 !import "consumers.text-summary" T
      8 !import "source.resolve" Resolve
      9 
     10 sourceRoot = "__ROOT__/cas"
     11 inputFile = "__INPUT__"
     12 expected = "lines: __LINES__"
     13 row alias hash name = pair alias (pair hash name)
     14 stage = do onOk_
     15   succSource <- readFile "lib/consumer/succ.scp"
     16   succHash <- M.cmPutSource sourceRoot succSource
     17   countSource <- readFile "lib/consumer/text/countLines.scp"
     18   countHash <- M.cmPutSource sourceRoot countSource
     19   entrySource <- readFile "demos/consumers/text-summary/summary-entry.scp"
     20   entryHash <- M.cmPutSource sourceRoot entrySource
     21   receiverSource <- readFile "demos/consumers/text-summary/summary-receiver.scp"
     22   receiverHash <- M.cmPutSource sourceRoot receiverSource
     23   M.cmPutImports sourceRoot [(row "successor" succHash "succBinary")
     24     (row "counter" countHash "countLines")
     25     (row "entry" entryHash "summaryEntry")
     26     (row "receiver" receiverHash "summaryReceiver")]
     27 selections successor = [(pair "counter" (T.counterState successor))
     28   (pair "entry" t) (pair "receiver" t)]
     29 names = ["successor" "counter" "entry" "receiver"]
     30 lookup workers alias = (lazyMaybe (_ : t) (worker : worker)
     31   (Resolve.sourceFindExternal workers alias))
     32 validated linked = (lazyResult
     33   (problem _ : pure (err problem t))
     34   (_ _ : pure (ok linked t))
     35   (CL.clValidate linked))
     36 execute workers = (bind (T.summaryLexical
     37     (lookup workers "counter") (lookup workers "entry")
     38     (lookup workers "receiver") inputFile)
     39   (outcome : putStrLn (matchBool "DONE" "WRONG"
     40     (lazyBool (_ : equal? (fst outcome) 0)
     41       (_ : equal? (T.render outcome) expected)
     42       (equal? expected "lines: ERROR")))))
     43 run = (thenIO (putStrLn "READY")
     44   (onOk_ stage (descriptor : thenIO (putStrLn "STAGED")
     45   (onOk_ (M.cmLoadLocated sourceRoot descriptor) (linked :
     46     thenIO (putStrLn "RESOLVED_PARSED")
     47       (onOk_ (validated linked) (_ : thenIO (putStrLn "VALIDATED")
     48         (onOk_ (M.cmPublishIR sourceRoot (CL.clAuthored linked)
     49           names) (manifest :
     50           thenIO (putStrLn "PUBLISHED")
     51             (onOk_ (CL.clPrepareRows [(pair "successor" t)] sourceRoot manifest
     52               (CL.clLocations linked)) (succWorkers :
     53               (onOk_ (CL.clPrepareRows
     54                 (selections (lookup succWorkers "successor")) sourceRoot manifest
     55                 (CL.clLocations linked)) (workers :
     56                 thenIO (putStrLn "WORKERS") (execute workers))))))))))))))
     57 main = io run
     58 main