Я пытаюсь выполнить примеры из книги Грэма Хаттона «Программирование на Haskell» (http://www.cs.nott.ac.uk/~gmh/book.html). Несмотря на то, что примеры написаны на грамотном хаскеле, я могу запустить ghci для загрузки примеров; например ghci cipher.lhs
(http://www.cs.nott.ac.uk/~gmh/cipher.lhs):
GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help
[1 of 1] Compiling Main ( cipher.lhs, interpreted )
Ok, modules loaded: Main.
*Main> let2int 'a'
0
Однако с некоторыми примерами из-за изменений в ghci у меня возникли некоторые проблемы; например, в Parsing.ls в главе 8 у меня ошибка No instance for (Applicative ...)
.
Из https://ghc.haskell.org/trac/ghc/wiki/Migration/7.10 Мне подсказали убрать некоторые ошибки, добавив код.
> instance Applicative Parser where
> pure = return
> (<*>) = ap -- defined in Control.Monad
>
> instance Functor Parser where
> fmap = liftM
>
> instance Alternative Parser where
> (<|>) = mplus
> empty = mzero
Однако я не смог разрешить это сообщение об ошибке:
Not in scope: type constructor or class ‘Alternative’
Что с этим не так, и как решить эту проблему? Исходный код, вызывающий проблему, находится по адресу http://www.cs.nott.ac.uk/~gmh/Parsing.lhs
Решение
Добавление этого кода отлично работает:
import qualified Control.Applicative as CA
instance CA.Alternative Parser where ...