tricu

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

consumer_echo_lexical.tri (1641B)


      1 -- Existing echo source on lexical workers with both handler result paths.
      2 !import "consumers.base-source" B
      3 !import "consumers.lexical-worker" L
      4 !import "consumers.structural" S
      5 !import "consumers.effect" E
      6 !import "prelude" !Local
      7 !import "io" !Local
      8 
      9 succeed value = pure (ok value t)
     10 fail value = pure (err "offline" t)
     11 runEcho worker receiver operations = (E.run L.lEffectStep
     12   [(pair "echo" (S.makeConsumer t worker))] operations receiver 7 91)
     13 check value expected = (matchResult (_ _ : false)
     14   (actual _ : equal? actual expected) value)
     15 checkError value expected = (matchResult
     16   (message _ : equal? message expected) (_ _ : false) value)
     17 checkAll worker = bind (runEcho worker "echo" [(pair "Echo" succeed)]) (success :
     18   bind (runEcho worker "echo" [(pair "Echo" fail)]) (failure :
     19     bind (runEcho worker "echo" t) (unknownOperation :
     20       bind (runEcho worker "absent" [(pair "Echo" succeed)]) (unknownReceiver :
     21         putStrLn (matchBool "echo-lexical-ok" "echo-lexical-DIFFER"
     22           (foldl and? true [
     23             (check success (pair 91 7))
     24             (check failure (pair 91 "offline"))
     25             (checkError unknownOperation "unknown operation")
     26             (checkError unknownReceiver "unknown receiver")]))))))
     27 main = io (onResult_ (readFile "demos/consumers/echo/echo-effect.scp")
     28   (_ : putStrLn "echo-lexical-source-error")
     29   (source : lazyResult
     30     (_ _ : putStrLn "echo-lexical-parse-error")
     31     (named _ : lazyResult
     32       (_ _ : putStrLn "echo-lexical-compile-error")
     33       (worker _ : checkAll worker)
     34       (L.lCompile (S.makeConsumer 91 (snd (snd named)))))
     35     (B.compileBaseSource source)))
     36 main