我需要圍繞哈斯克爾國家monad包裹我的頭,我有一些問題。 這個任務是實現一個函數countConcat它將字符串與狀態monad連接起來並且函數extractCC它得到了這個函數的結果。與哈斯克爾狀態monad字符串連接
所以extractCC ((return 0) >>= countConcat "a" >>= countConcat "b" >>= countConcat "c")
將產生(3,「ABC」)
據我瞭解countConcat將是怎樣的一個機械手功能及extractCC應該包含某種runState的,對不對?
任何tipps或ressources讓我走向正確的方向是高度讚賞。 (從來就已經通過維基和learnyouahaskell部分,但仍然感覺與此相當愚蠢的)
試着寫它不首先使用狀態,即作爲一個函數'字符串 - >(智力,字符串) - >(Int,String)'。然後再次查看狀態說明以查看該函數如何映射到monad。初始狀態也是'(0,「」)'(在第一個'return'中)。 –
感謝您的輸入,我已經嘗試過對沒有狀態的函數進行建模,這很容易。我的問題是更貼合countConcat的簽名和實施倉操作者對國家鏈接 – floAr