相关疑难解决方法(0)

实现Parser Functor

在Brent Yorgey的2013年UPenn 课程作业中,newtype存在以下内容:

newtype Parser a = Parser { runParser :: String -> Maybe (a, String) }

我正试图实现Parser一个Functor.

给出以下first功能来帮助解决此问题:

first :: (a -> b) -> (a, c) -> (b, c)
first f (a, c) = (f a, c) 
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

instance Functor (Parser) where
  fmap g (Parser f)  = Parser $ fmap (first g) (f . g)
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.

据我所知,f的类型是String -> Maybe (a, String).所以,我不知道怎么applyStringf …

haskell

4
推荐指数
1
解决办法
588
查看次数

标签 统计

haskell ×1