相关疑难解决方法(0)

Haskell中的Comonad类型类是什么?

Haskell中的Comonad类型类是什么?作为Comonad从Control.Comonad在comonad包(即提供Comonad类型类也是任何其他包的说明欢迎).我模糊地听说过Comonad,但我真正知道的是它提供的extract :: w a -> a,与Monad相似return :: a -> m a.

在"真实"代码中注意Comonad的"真实生活"用途的奖励积分.

haskell typeclass comonad

103
推荐指数
2
解决办法
2万
查看次数

链接Haskell函数的数据类型

可以说我有以下内容:

data FuncAndValue v res = FuncAndValue (v -> res) v

chain :: (res -> new_res) -> FuncAndValue v res -> FuncAndValue v new_res
chain new_f (FuncAndValue old_f v) = FuncAndValue (new_f . old_f) v  
Run Code Online (Sandbox Code Playgroud)

被GHC可能能够结合功能new_fold_f通过内联成一个单一的功能?

基本上,以数据类型存储函数无论如何都会抑制优化.

我希望GHC能够轻松地将函数链组合成一个(即所以我的结构上的"总和"不涉及重复调用代表的thunk,(+)而只是内联,(+)因此它像for循环一样运行.我希望将函数存储在数据类型中,然后稍后访问它们不会抑制它.

haskell ghc

5
推荐指数
1
解决办法
216
查看次数

使用商店comonad表现Conway的生命游戏

我使用Store comonad 编写了Conway的生命游戏的简单实现(参见下面的代码).我的问题是,从第五次迭代开始,网格生成明显变慢.我的问题与我使用Store comonad的事实有关吗?还是我犯了一个明显的错误?据我所知,其他的实现,这是基于拉链comonad,是有效的.

import Control.Comonad

data Store s a = Store (s -> a) s

instance Functor (Store s) where
    fmap f (Store g s) = Store (f . g) s

instance Comonad (Store s) where
    extract (Store f a) = f a
    duplicate (Store f s) = Store (Store f) s

type Pos = (Int, Int)

seed :: Store Pos Bool
seed = Store g (0, 0)
    where
        g ( 0,  1) …
Run Code Online (Sandbox Code Playgroud)

performance haskell comonad

4
推荐指数
1
解决办法
419
查看次数

标签 统计

haskell ×3

comonad ×2

ghc ×1

performance ×1

typeclass ×1