나는 상태 모나드 here을 통해 갈거야 내가 구현하려고 해요 :상태 모나드를 구현할 때 데이터 생성자 오류가 발생 했습니까?
나는 다음과 같은 오류 받고 있어요 그러나import Control.Monad.Reader
import Control.Monad.Writer
import Control.Monad.State
type Stack = [Int]
pop :: State Stack Int
pop = State $ (x : xs) -> (x, xs)
:
"Data constructor not in scope:
State :: ([t0] -> (t0, [t0])) -> State Stack Int
Perhaps you meant one of these:
‘StateT’ (imported from Control.Monad.State),
variable ‘state’ (imported from Control.Monad.State)"
내가 여기 기본 뭔가를 놓치고 있습니까?
알렉 (Alec)에게 감사드립니다. 아주 오래되었습니다. 나는 노년기에 까다로워하지 않기 때문에 기쁘다. –
[링크 된 자습서는 구식이 아니며 단순화되지 않습니다.] (http://hackage.haskell.org/package/mtl-1.0/docs/Control-Monad-State.html # t : State)'Identity '에 계층화 된 트랜스 포머가 해당 모나드를 직접 정의하는 것과 비교하여 런타임 비용이 들었을 것이라고 사람들이 걱정하고 많은 라이브러리 (mtl 포함)가 모나드와 트랜스포머를 모두 제공 할 때가있었습니다. 결국 코드 중복/유지 관리 부담에 대한 논쟁이이를위한 성과 논쟁에서 승리했습니다. –