comonad

    14熱度

    1回答

    爲什麼當你定義函數複製 duplicate :: w a -> w (w a) 的Comonad類型類(link),你必須修改「的背景下,」所有元素(即更改除當前其他元素值的上下文)。爲什麼不只是使用類似的東西在Monad中返回? 例(拉鍊): data Z a = Z [a] a [a] ,爲什麼我就不能定義重複的 duplicate z = Z [] z [] 我試圖得到要求

    0熱度

    1回答

    單子列表是given here。另見斯皮瓦克的paper here。所以列表是一個monad。它是一個共同的嗎?你會如何證明這一點?

    4熱度

    2回答

    我們可以將monad描述爲計算上下文,monad實現完全保留該上下文的含義。 例如Option - 上下文的含義是值可能存在。 考慮到Option數據類型,唯一有意義的實現是pure = some, flatMap f = {none => none; some x => f x } 正如我對monad的理解一樣,通過遵循類型簽名 - 對於任何monad,只有一個合理的實現。換句話說,如果您想爲值

    6熱度

    1回答

    在我的應用程序中,我試圖實現一個動畫系統。在這個系統中,動畫被表示爲幀的循環列表: data CyclicList a = CL a [a] 我們可以(低效率)推進動畫如下: advance :: CyclicList a -> CyclicList a advance (CL x []) = CL x [] advance (CL x (z:zs)) = CL z (zs ++ [x])

    17熱度

    3回答

    {-# LANGUAGE DeriveFoldable #-} {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveTraversable #-} import Control.Comonad import Data.Functor.Reverse import Data.List (unfoldr) 首先,一些上下文(哈哈)的方式。我

    14熱度

    3回答

    我需要下面的類的功能: class InterleavedHomomorphic x where interleaveHomomorphism :: (forall a . f a -> g a) -> x f -> x g 顯然,我發明了它的名字是不以任何方式對任何一個官方的術語,上述類型的類是不是很優雅。這是一個有名字的概念,甚至是一些圖書館的實現嗎?有沒有更合理的方式來做到這一

    13熱度

    1回答

    data Tree t = Empty | Node t (Tree t) (Tree t) 我們可以創建函子實例,並使用 fmap :: (t -> a) -> Tree t -> Tree a 但是,如果不是(T - > A)我想(樹T - > A)這樣我就可以有機會獲得一個整體(節點T )不算了筆 treeMap :: (Tree t -> a) -> Tree t -> Tree

    11熱度

    1回答

    在沉思些什麼有用的標準類建議to this one class Coordinate c where createCoordinate :: x -> y -> c x y getFirst :: c x y -> x getSecond :: c x y -> y addCoordinates :: (Num x, Num y) => c x y -> c

    3熱度

    1回答

    我已經使用Store comonad編寫了Conway's Game of Life的簡單實現(請參閱下面的代碼)。我的問題是,從第五次迭代開始,網格生成速度明顯變慢。我的問題與我使用Store comonad的事實有關嗎?還是我犯了一個明顯的錯誤?據我所知,基於Zipper comonad的otherimplementations是高效的。 import Control.Comonad da

    4熱度

    1回答

    我過去幾週一直在向一個將單子(主要是從mtl)轉移到箭頭的圖書館捐款。 下面是與StateT單子一個簡單的例子,從mtl: newtype StateT s m a = StateT { runStateT :: s -> m (a, s) } -- arrowization --> newtype StateTA s a b c = StateTA { runStateTA :: a (b,