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