packages feed

essence-of-live-coding-0.1.0.0: app/TestExceptions.hs

{-# LANGUAGE Arrows #-}

-- base
import Control.Arrow

-- transformers
import Control.Monad.Trans.Class

-- essence-of-live-coding
import LiveCoding

liveProgram = liveCell
  $ safely $ do
    try $   throwingCell
    safe $ arr (const (3:: Integer)) >>> sumC >>> arr (const ())

throwingCell = proc _ -> do
  n <- sumC -< (1 :: Integer)
  if n > 10
    then throwC -< ()
    else returnA -< ()
  arrM $ lift . print -< n


main = do
  (debugger, observer) <- countDebugger
  launchWithDebugger liveProgram $ debugger <> statePrint
  await observer 30