Ответ 1
Я думаю, вы столкнулись с ограничением мономорфизма. Это ограничение означает: если переменная объявлена без явных аргументов, ее тип должен быть мономорфным. Это заставляет typechecker выбирать конкретный экземпляр Stream
, но он не может решить.
Есть два способа борьбы с ним:
-
Дайте
simple
явную подпись:simple :: Stream s m Char => ParsecT s u m Char simple = letter
-
Отключите ограничение мономорфизма:
{-# LANGUAGE NoMonomorphismRestriction #-} import Text.Parsec simple = letter
См. Что такое ограничение мономорфизма? для получения дополнительной информации о ограничении мономорфизма.