monoids

    9熱度

    1回答

    由於顯而易見的原因,以下方法無效。 (defprotocol Monoid (mappend [a b]) (mzero [])) mzero具有零個參數,無參數的方法是不允許的(或沒有意義)的協議。在Haskell或Scala中,派發是基於類型而不是基於值的,這不是問題。 什麼是在Clojure中概念化和編寫Monoid協議的正確方法?

    2熱度

    2回答

    我有問題,我不知道如何決定我的函數indexJ必須在每個步驟中選擇什麼子樹遍歷我的平衡二叉樹 - JoinList。 這個想法是給緩存每個子樹的大小(數據元素的數量)。然後可以在每個步驟中使用它來確定所需的索引是在左邊還是右邊。 我有這樣的代碼: data JoinList m a = Empty | Single m a | Append m (JoinLis

    8熱度

    2回答

    我在記錄中使用了以下代碼,該記錄具有類型爲SceneGraph的字段'_scene'。我使用makeLenses爲它創建了鏡頭。 inputGame :: Input -> Game -> Game inputGame i g = flip execState g $ do let es = g ^. userInput . events sg = g ^. scene

    9熱度

    1回答

    我正試圖將haskell示例轉換爲scalaz。最初的例子是這樣的: ("Answer to the ", (*)) <*> ("Ultimate Question of ", 6) <*> ("Life, the Universe, and Everything", 7) 其中,只要我能夠理解,使用this實例。 它沒有得到轉化字面上scalaz: scala> ("Answer to th

    6熱度

    1回答

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

    8熱度

    2回答

    我正在學習通過學習你一個Haskell,並且我正在關於monoids的部分。在本節中,作者定義了一棵樹的foldMap方法,如下所示: instance F.Foldable Tree where foldMap f Empty = mempty foldMap f (Node x l r) = F.foldMap f l `mappend` f x

    22熱度

    2回答

    我只是偶然發現monoidal解析從slide名爲「簡介猿」Edward Kmett。幻燈片始終使用haskell。 現在,當搜索該術語時,我發現只有少數幾個提及它,並且來自同一作者。所以我認爲這個詞可以在這裏解釋。 那麼,是monoidal解析東西是有趣的和新的?它出現在除了我鏈接的幻燈片之外的任何地方嗎?最重要的是它是什麼?幻燈片本身似乎沒有給出定義,也沒有突出顯示。

    4熱度

    1回答

    我正在寫一個函數pad,它需要一個列表並填充它,直到它達到一定的大小。我試過2個實現: pad :: Monoid a => Int -> [a] -> [a] pad len list = replicate (len - length list) mempty ++ list 和 pad :: Int -> a -> [a] -> [a] pad len value list = re

    18熱度

    2回答

    GHC有一些語言標誌,例如DeriveFunctor,DeriveDataTypeable等,它們使編譯器能夠生成除Haskell 98允許的類型之外的類型類的派生實例。這對於類似Functor之類的東西尤其有用,其中該類的法則指定一個明顯的「自然」派生實例。 那麼爲什麼不爲Monoid?這似乎是與一個單一的數據構造的任何數據類型: data T = MkT a b c ... 一個能機械地產

    5熱度

    1回答

    我有一個Haskell類型來使一個Map有幾個與某個鍵相關的值。 如果我編譯下面的代碼: type Mapa k v = Map k [v] instance Monoid (Mapa k v) where --mempty :: Mapa k v mempty = DM.empty --mappend :: Mapa k v -> Mapa k v -> Map