저는 함수형 프로그래밍을 처음 접했고 최근에는 Learn You a Haskell 에서 배웠지 만이 장을 살펴 보았을 때 아래 프로그램을 고수했습니다.
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)
이 줄을 .hs 파일에 저장했지만 불평 한 내 ghci로 가져 오지 못했습니다.
more1.hs:4:15:
Not in scope: data constructor `Writer'
Perhaps you meant `WriterT' (imported from Control.Monad.Writer)
Failed, modules loaded: none.
": info"명령으로 유형을 조사했습니다.
Prelude Control.Monad.Writer> :info Writer
type Writer w = WriterT w Data.Functor.Identity.Identity
-- Defined in `Control.Monad.Trans.Writer.Lazy'
내 관점에서 이것은 "newtype Writer wa ..."와 같은 것으로되어 있었기 때문에 데이터 생성자를 공급하고 Writer를 얻는 방법에 대해 혼란 스럽습니다.
버전 관련 문제 일 수 있으며 ghci 버전은 7.4.1입니다.