packages feed

elm-repl-0.3: src/Eval/Input.hs

module Eval.Input (eval) where

import Control.Monad.Trans (liftIO)
import System.Console.Haskeline (handleInterrupt)
import qualified System.Exit as Exit

import qualified Eval.Code as Code
import qualified Eval.Command as Eval
import qualified Eval.Meta as Meta
import qualified Input


eval :: Input.Input -> Eval.Command (Maybe Exit.ExitCode)
eval action =
    case action of
      Input.Meta cmd ->
          Meta.eval cmd

      Input.Skip ->
          return Nothing

      Input.Code code ->
          do  handleInterrupt interruptedMsg (Code.eval code)
              return Nothing
    where
      interruptedMsg =
          liftIO $ putStrLn " Computation interrupted, any definitions were not completed."