Я в настоящее время изучаю Haskell с книгой Learn You a Haskell для Great Good и застрял со сценариями для Log Number и Greatest Common Divisor введение монады Writer
. Я понимаю, что они делают, но загрузка их в ghci
приводит к ошибке. См .: http://learnyouahaskell.com/for-a-few-monads-more#writer
Ниже приведен скрипт logNumber
и код ошибки, который я получаю:
-- Log Number
import Control.Monad.Writer
logNumber :: Int -> Writer [String] Int
logNumber x = Writer (x, ["Got number: " ++ show x])
multWithLog :: Writer [String] Int
multWithLog = do
a <- logNumber 3
b <- logNumber 5
return (a*b)
error:
* Data constructor not in scope:
Writer :: (Int, [[Char]]) -> Writer [String] Int
* Perhaps you meant one of these:
`WriterT' (imported from Control.Monad.Writer),
variable `writer' (imported from Control.Monad.Writer)
|
5 | logNumber x = Writer (x, ["Got number: " ++ show x])
| ^^^^^^
Я не знаю, почему это происходит, как я скопировал код из примера. Код неисправен? Или библиотека Control.Monad.Writer
изменилась с момента публикации книги? Как я могу исправить код?
Я использую haskell-platform
с ghc 8.6.5
.