module Language.Nock5K.Repl where import Language.Nock5K.Parse import Language.Nock5K.Spec import qualified Control.Exception as C import System.Console.Readline 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 -> print e Right n -> ep n repl where ep n = (print . nock) n `C.catch` (\e -> print (e :: C.SomeException))