11
我試圖寫一個分析器使用parsers
package使用do
語法。這裏是一個例子:ApplicativeDo語言擴展與`分析`應用仍然在尋找Monad實例
{-# LANGUAGE ApplicativeDo #-}
import Text.Parser.Char (string, spaces)
import Text.Parser.Token (TokenParsing, natural)
issueParser :: TokenParsing p => p Integer
issueParser = do
spaces
string "**Issue:**"
spaces
string "https://github.com" <|> string "github.com"
string "/commercialhaskell/stack/issues/"
natural
GHC給我的錯誤是。此錯誤消息是正確的,TokenParsing
不提供Monad
作爲超級類,但它確實提供了Applicative
這意味着,因爲我打開了此語言擴展,因此我應該能夠使用do
語法,但只有Applicative
。我在做什麼錯誤/在這裏失蹤?
哇哦,我很驚訝看到'ApplicativeDo'沒有處理這個相當明顯的情況! –
'ApplicativeDo'很愚蠢。例如。它不能處理任何種類的'let'語句 – luqui
我有一個類似的問題:http://stackoverflow.com/questions/41210599/applicativedo-not-working-with-sequencing – danidiaz