Ben Learn You a Haskell's guide on the state monad okuyordum ama sorun derlemek olamazdı yığın örnek beri anlamakta vardı. Ben bunu yapmak için gerekeni anlıyor olmakla birlikte, derlemek olmazdevlet monad ve learnyouahaskell.com
import Control.Monad.State
type Stack = [Int]
pop :: State Stack Int
pop = State $ \(x:xs) -> (x,xs)
push :: Int -> State Stack()
push a = State $ \xs -> ((),a:xs)
: kılavuzda, o aşağıdaki kod parçasını kullandı. Neden olduğuna dair hiçbir fikrim yok. Hata iletisi: Bu aslında, bildiğim kadarıyla, bir "Devlet" beri bana
newtype State s a = State { runState :: s -> (a,s) }
olarak tanımlanan bir veri yapıcısı, hiç mantıklı rehber "yanlış" mı
Stack.hs:6:7: Not in scope: data constructor `State'
Stack.hs:9:10: Not in scope: data constructor `State'
ve eğer öyleyse, nasıl düzeltebilirim? Ben yorumlarında belirtildiği gibi
'Control.Monad.State',' State' kurucu dışa (küçük harf 'S'ye sahip)' state' kullanmaz. – Vitus
@Vitus Güzel, bilmiyordum [o fonksiyonu] (http://hackage.haskell.org/packages/archive/transformers/latest/doc/html/Control-Monad-Trans-State-Lazy.html#v : devlet) ihraç edildi. Bence bir yorumdan ziyade bir cevap olarak yazmalısın. – danr
@Vitus: o zaman garip, çünkü onun kodu gerçekten Windows'ta GHCI 6.12.3'ümde iyi çalışıyor ve çalışıyor. –