[Haskell-cafe] instance for (Show ([(String, Int)] -> Int))

Daniel Fischer daniel.is.fischer at googlemail.com
Fri Dec 24 23:07:45 CET 2010


On Friday 24 December 2010 22:47:55, Aaron Gray wrote:
> On 24 December 2010 18:24, Henning Thielemann
> <lemming at henning-thielemann.de
>
> > 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




More information about the Haskell-Cafe mailing list