小编ger*_*ter的帖子

数据并行Haskell中PArray和[::]之间有什么区别?

我一直在对Data Parallel Haskell进行大量研究,发现了两种单独的并行数组类型.这种[::]类型似乎在研究论文中显得更多,似乎是理想的类型,但PArray似乎无处不在.关于该主题的Wiki页面清楚地表明,[::]无法将类型数组传递给非开发代码.为什么?为什么有这种中间PArray类型?这对我来说似乎完全是多余的.维基称之为"平面阵列",但矢量化的重点是使平行阵列平坦.

更新:阅读更多论文和文档和源代码后,我更加困惑.[::]或者它的同义词PArr似乎在GHC.PArr中作为一个平面数组实现,而PArray在多个地方称为"flat"的中间类型是在Data.Array.Parallel.PArray.Base和从那里导入的其他模块中实现的.数据系列,使用我读过的许多论文中描述的展平变换.为什么扁平阵列不扁平而嵌套扁平?

更新2:经过更多的研究,我发现教学是一个完整的混乱.维基页面在近一年内没有任何内容更新,与hackage文档相矛盾(参见Data.Array.Parallel.Prelude,它明确表示不会导入特殊的前奏),并且通常过时.该GHC Trac的页面也已经过时了,包括,例如,引导到提到包DPH包,至少就Hackage而言(我没有,而且不太不到哪里寻找中其他地方),不存在,并没有提到像dph-lifted-vseg这样的软件包.

更好的说明,我相信我现在理解第一次更新的答案,GHC.PArr中的这部分评论暗示:

-- BIG UGLY HACK: The desugarer special cases this module.  Despite the uses of '-XParallelArrays',
--                the desugarer does not load 'Data.Array.Parallel' into its global state. (Hence,
--                the present module may not use any other piece of '-XParallelArray' syntax.)
--
--                This will be …
Run Code Online (Sandbox Code Playgroud)

haskell data-parallel-haskell

33
推荐指数
1
解决办法
649
查看次数

如何检查Haskell中缀运算符优先级

我可以在GHCi中看到中缀运算符的类型:t如下:

>:t (.)
(.) :: (b -> c) -> (a -> b) -> a -> c
Run Code Online (Sandbox Code Playgroud)

如何在GHCi中看到运算符优先级?那可能吗?

另外,奖金问题,有没有办法通过ghci查看这些前奏函数的来源?

haskell ghci infix-operator

18
推荐指数
1
解决办法
3556
查看次数