[Haskell-beginners] about parser question < Programming in haskell _ chapter 8 >

Haisheng Wu freizl at gmail.com
Mon Jul 18 13:17:36 CEST 2011


I think you can check full source code at its web site to see what you
missed.

My thought: did you make Parser as a instance of Monad?

-Haisheng


On Mon, Jul 18, 2011 at 5:20 PM, anyzhen <jiangzhen3s at qq.com> wrote:

> well,i am reading the book :<*Programming in haskell *>
> *chapter 8* *functional parsers *
> this chapter try teaching an parser technology,but i have some problem
> about *do* keyword
>
> --some  brief info of types :
> type Parser a = String -> [(a,String)]
> item :: Parser Char                           --item "abc"  = [('a',"bc")]
> return' :: a -> Parser a                     --return' 'a' "foo" =
> [('a',"foo")]
>
> --below code complier notice... sorry format
> p2 :: Parser (Char,Char)
> p2 = do x <- item
>             item
>             y <- item
>             return' (x,y)
> *"No instance for (Monad ((-)) String))
>                      *
> *    arising from a execute statement       **            **            **
>           **            **      *
> * Possible fix : add an instance declaration for **(Monad ((-)) String))**
>          *
> *In a stmt of a 'do' expression : y <- item**            **            **
>           **         **        *
> *In the expression:**            **            **            **
>   **            **            **            **    *
> *  do {** x <- item;**            **            **            **
>   **            **            **            **       *
> *          item;**            **            **            **            **
>           **            ** **            **           **   *
> *          y <- item;**            **            **            **
>   **            **            **            **       *
> *          return' (x,y)}**            **            **            **
>       **            **            **            *
> * In an equation for 'p2':**            **            **            **
>         **    **            **        **       *
> *        p2 **            **            **            **            **
>         **            **            **            **        *
> *           = do { ** x <- item;**            **            **
> **            **            **            **      *
> *                       item;**            **            **            **
>           **            **            **            **   *
> *                       y <- item;**            **            **
>   **            **            **            **       *
> *                       ....**}"**            **            **
> **            **            **            **            **  *
> *
> *
> *thanks for any help *
> *jiangzhen <mail:jiangzhen3s at qq.com>*
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20110718/ea7911ed/attachment.htm>


More information about the Beginners mailing list