hsnock-0.3.1: Language/Nock5K/Repl.hs
module Language.Nock5K.Repl where
import Language.Nock5K.Parse
import Language.Nock5K.Spec
import System.Console.Readline
import System.IO
import Text.ParserCombinators.Parsec
repl = do ln <- readline "nock "
case ln of
Nothing -> return ()
Just "exit" -> return ()
Just s -> do addHistory s
case parse noun "" s of
Left e -> (sep . show) e
Right n -> ep n
repl
where ep n = case nock n of
Left e -> sep e
Right n -> print n
sep e = hPutStrLn stderr $ "error: " ++ e