applicative

    5熱度

    1回答

    對不起,可怕的標題。我正在嘗試爲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 `

    1熱度

    1回答

    我需要用attoparsec解析固定長度的字段,但現在我正在與編譯器一起掙扎。 進出口仍然是一個新手,下面的代碼是最接近的解決方案,我有: > {-# LANGUAGE OverloadedStrings #-} > import Control.Applicative > import Data.Text as T > import Data.Attoparsec.Combinator

    20熱度

    1回答

    我的問題一方面是關於Applicative和Monad類的類,另一方面是Chomsky層次結構的上下文無關和上下文敏感的語法層次。 我聽說類型類和語法級別之間存在對應關係。這種通信的確切程度如何? 也就是說,所有上下文無關語法都可以使用沒有比應用組合器更強大的語法來解析,而且所有語法都可以使用沒有比應用組合器上下文更強的語法解析嗎?換句話說,Applicative類型類是否完全對應於上下文無關語法

    6熱度

    1回答

    調試無窮和說我有一個功能(它沒有任何實際的應用,只是一個學術興趣,從而奇怪的方式寫出來,與類羣,應用性函子與不動點組合子) f :: Num a => a -> Sum a f = fix ((<>) <$> Sum <*>) 它是typechecks,但我不能確定它在我測試它之前會做什麼。 如何進行測試和/或調試?我的意思是像幾次迭代後看到結果一樣,如take 10 [1..]。 我知道一

    0熱度

    2回答

    我正在將zxcvbn password strength算法轉換爲Haskell。 我有檢查的所有字符爲ASCII兩個函數和蠻力攻擊是可能的: filterAscii :: [String] -- ^terms to filter -> [String] -- ^filtered terms filterAscii = filter $ all (\ chr -> ord chr

    4熱度

    1回答

    比方說,我有這樣的解析器類型: newtype Parser a = Parser { runParser :: String -> Maybe (a, String) } 而這個原子解析部: satisfy :: (Char -> Bool) -> Parser Char satisfy g = Parser $ \stream -> case stream of (x:xs)

    6熱度

    1回答

    我正在編寫一個xml-管道解析器,我更喜歡適用於monadic的語法。儘管有很多論點需要結合,但我在應用方面有些失落。我目前的問題有8個參數,我只想用第四和第六個來構造結果。 我能做到的唯一方法是:但應該有一個平面解決方案的明星花式排列雖然: import Control.Applicative a1 :: Applicative Text a2 :: Applicative Text a

    18熱度

    3回答

    好了,我知道是什麼Applicative類型類包含的,爲什麼這是有用的。但我不能完全圍繞如何在一個不平凡的例子中使用它。 考慮,例如,下列相當簡單秒差距解析器: integer :: Parser Integer integer = do many1 space ds <- many1 digit return $ read ds 現在如何赫克你會寫,而無需使用

    15熱度

    3回答

    當執行由someFun <$> (a :: IO()) <$> (b :: IO())定義的IO操作時,是否執行了a和b操作?也就是說,我可以指望a在b之前執行嗎? 對於GHC,我可以看到IO是使用State來實現的,並且還參見here它是Applicative實例,但是找不到實際實例聲明的來源。通過State實現表明,不同的IO效果需要順序,但不必定義它們的排序。 在GHCi中玩耍似乎Appli

    0熱度

    2回答

    編輯以更完整的問題: 我想創建一個解析器(我使用UU-parsinglib),其採用前一個解析器的結果,並根據條件如果結果包含某個構造函數,則失敗: 我現在認識到這必須是monadic解析器。 我有一個包含非直接左遞歸的語法。下面說明了這個問題,但現實是稍微令人費解: data Field = Field_A A Field_B B Field_C C