對不起,可怕的標題。我正在嘗試爲Monad包裝一個類型爲Monoid的Applicative實例。 instance (Monad m, Monoid o) => Applicative (m o) where
pure x = return mempty
xm <*> ym = do
x <- xm
y <- ym
return $ x `
調試無窮和說我有一個功能(它沒有任何實際的應用,只是一個學術興趣,從而奇怪的方式寫出來,與類羣,應用性函子與不動點組合子) f :: Num a => a -> Sum a
f = fix ((<>) <$> Sum <*>)
它是typechecks,但我不能確定它在我測試它之前會做什麼。 如何進行測試和/或調試?我的意思是像幾次迭代後看到結果一樣,如take 10 [1..]。 我知道一
我正在編寫一個xml-管道解析器,我更喜歡適用於monadic的語法。儘管有很多論點需要結合,但我在應用方面有些失落。我目前的問題有8個參數,我只想用第四和第六個來構造結果。 我能做到的唯一方法是:但應該有一個平面解決方案的明星花式排列雖然: import Control.Applicative
a1 :: Applicative Text
a2 :: Applicative Text
a
編輯以更完整的問題: 我想創建一個解析器(我使用UU-parsinglib),其採用前一個解析器的結果,並根據條件如果結果包含某個構造函數,則失敗: 我現在認識到這必須是monadic解析器。 我有一個包含非直接左遞歸的語法。下面說明了這個問題,但現實是稍微令人費解: data Field =
Field_A A
Field_B B
Field_C C