module Language.Noodle.Lib.IO(decls,env) where

import Language.Noodle.Evaluation

env = extenv decls
decls = [("put", extfun put)
        ,("display", extfun display)
        ,("get", Thunk get) ]

put :: Val -> IO Val
put (Str s) = do putStrLn s
                 return Nil
put _          = return $ srtError "invalid argument passed to io.put"

display :: Val -> IO Val
display v = do putStrLn $ show v
               return Nil

get :: IO Val
get = do s <- readLn
         return $ Str s