Давайте рассмотрим несколько соответствующих битов src/Text/ParserCombinators/UU/Demo/Examples.hs
:
{-# LANGUAGE FlexibleInstances,
TypeSynonymInstances,
MultiParamTypeClasses,
Rank2Types, FlexibleContexts, NoMonomorphismRestriction,
CPP #-}
CPP
должен включить препроцессор C.
#define DEMO(p,i) demo "p" i p
Это должно заменить вхождения DEMO
правильным кодом, который не вызовет этих ошибок.
show_demos :: IO ()
show_demos =
do DEMO (pa, "a")
DEMO (pa, "" )
DEMO (pa, "b")
DEMO (((++) <$> pa <*> pa), "bbab")
DEMO (pa, "ba")
DEMO (pa, "aa")
DEMO ((pCount pa :: Parser Int), "aaa")
DEMO ((do {l <- pCount pa; pExact l pb}), "aaacabbbbb")
DEMO ((amb ( (++) <$> pa2 <*> pa3 <|> (++) <$> pa3 <*> pa2)), "aaaaa")
DEMO ((pList pLower), "doaitse")
DEMO (paz, "abc2ez")
DEMO ((max <$> pParens ((+1) <$> wfp) <*> wfp `opt` 0), "((()))()(())")
DEMO ((pa <|> pb <?> justamessage), "c")
DEMO ((amb (pEither parseIntString pIntList)), "(123;456;789)")
-- DEMO ((pa *> pMunch ( `elem` "^=*") <* pb), "a^=^**^^b")
Но, очевидно, они не заменяются, поскольку вы получаете эти ошибки. Я предполагаю, что ваша версия GH C действительно очень старая, поскольку до 6.8.1, CPP
не поддерживалась . Попробуйте обновить до новой версии GH C.