
On Friday 24 December 2010 22:47:55, Aaron Gray wrote:
On 24 December 2010 18:24, Henning Thielemann
wrote:
On Fri, 24 Dec 2010, Aaron Gray wrote:
The compiler is requesting an instance declaration for Show :-
expr-eval.hs:334:23: No instance for (Show ([(String, Int)] -> Int)) arising from a use of `print' at expr-eval.hs:334:23-27 Possible fix: add an instance declaration for (Show ([(String, Int)] -> Int)) In the first argument of `(.)', namely `print' In the second argument of `(>>=)', namely `print . calc . lexer' In the expression: getContents >>= print . calc . lexer
... maybe 'calc' needs a further argument?
I have attached what I have typed in so far.
Well, *ExprEval> :t calc calc :: [Token] -> [(String, Int)] -> Int calc needs an environment (a dictionary of let-bound names), which you have to provide. main = print . flip calc [] . lexer works fine.
Aaron