

	Interact.lhs

	Top-level interaction loop for a calculator

>	module Interact where

>	import IO hiding ( bracket )

>	import Types
>	import Store
>	import ParseLib
>	import ParseCalc
>	import Eval
>	import MonadIO


>	calcStep :: Store -> IO Store

>	calcStep st
>	  = do line <- getLine
>	       comm <- return (calcLine line)
>	       (val , newSt) <- return (command comm st)
>	       print val
>	       return newSt


>	calcSteps :: Store -> IO ()

>	calcSteps st
>	  = while notEOF
>	          (do newSt <- calcStep st
>	              calcSteps newSt)

>	notEOF :: IO Bool
>	notEOF = do res <- isEOF
>	            return (not res)

>	mainCalc :: IO ()
>	mainCalc = calcSteps initial





