pattern-synonyms

    25熱度

    5回答

    我是一個Haskell新手,並且在找出如何匹配ByteString的模式時遇到了一些麻煩。該[Char]版本我的功能看起來像: dropAB :: String -> String dropAB [] = [] dropAB (x:[]) = x:[] dropAB (x:y:xs) = if x=='a' && y=='b' then dropAB xs

    3熱度

    2回答

    這給了我下面的錯誤 不在範圍:數據構造Blah 爲什麼?我以爲我可以使用類型同義詞,我到處都可以使用Person data Person = Person { weight :: Int, height :: Int } type Blah = Person person1 :: Blah person1 = Blah 80 187

    12熱度

    1回答

    是否一些標準的Haskell庫這樣定義 data ListWithEnd e a = Cons a (ListWithEnd e a) | End e 這是一個列表,其端接元件中攜帶的指定類型的值的數據類型? 所以ListWithEnd()與[]是同構的,而ListWithEnd Void是同構於無限流。或者,不同的觀察,ListWithEnd e a非常接近ConduitM

    1熱度

    2回答

    說我想在列表的末尾刪除所有零: removeEndingZeros :: (Num a, Eq a) => [a] -> [a] removeEndingZeros (xs ++ [0]) = removeEndingZeros xs removeEndingZeros xs = xs 這不,因爲在參數中(++)運營商的合作。我如何通過模式匹配來確定列表的結尾?

    8熱度

    1回答

    嘗試在具有類型級別列表的GADT上基於 定義模式同義詞時出現錯誤。 我設法熬下來到這個例子: {-# LANGUAGE GADTs #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE PatternSynonyms #-} mo

    12熱度

    1回答

    我已經設法構建了下面顯示我的問題的「最小」示例。 倘若PatternSynonyms擴展啓用 data Vec = Vec Int Int pattern Ve x y = Vec x y f :: (Vec, Vec) -> Vec f ([email protected](Ve a b), Ve c d) | a > b = Vec c d | otherwis