gpt4 book ai didi

haskell - 将 fmap 与 Parallel.Strategies 结合使用会出现 NFData 错误

转载 作者:行者123 更新时间:2023-12-02 18:34:29 24 4
gpt4 key购买 nike

我在使用 Control.DeepSeq 中的 NFData 类时遇到了一些问题。我希望我的类型使用 Control.Parallel.Strategies 模块并行实现其 Functor fmap 。例如,在下面的代码中,我收到一个错误,开头为“无法推断 (NFData b)...”。如果我使用rseq而不是rdeepseq没有问题,但是我想尝试rdeepseq。我在 Ubuntu 11.04 下运行 GHC 6.12.3。

module Main where

import Control.Parallel.Strategies
import Control.DeepSeq

data Foo a = Foo Int [a]
deriving (Show,Eq)

instance Functor Foo where
fmap f (Foo i xs) = Foo i (map f xs `using` parList rdeepseq)

最佳答案

抱歉,这是不可能的。如果您查看 fmap,您可以看到它使用 rdeepseq,它需要 Foo 内列表中的类型 a > 位于 NFData 类中。但根本没有地方可以附加此约束,因为实例声明中的任何地方都没有提到该类型变量。

使用非标准版本的 Functor 有多种解决方法,但没有一个是令人愉快的。

看看Haskell Type Constraints Unleashed获取建议的解决方案。

关于haskell - 将 fmap 与 Parallel.Strategies 结合使用会出现 NFData 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6132377/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com