小编Evg*_*M86的帖子

推荐阅读/教程,了解反应性香蕉FRP库

我对FRP(功能反应编程)反应香蕉 haskell库感兴趣.你会推荐什么读新手才能理解反应性香蕉背后的理论?据我了解,这个领域已取得一些进展,不同的FRP图书馆使用不同的方法,所以我认为任何FRP论文都不会这样做.

haskell frp reactive-programming

42
推荐指数
3
解决办法
5844
查看次数

Haskell修复 - 如何减少数组和返回索引?

在GNU Octave中这段代码 -

[e, ix] = min(X);
Run Code Online (Sandbox Code Playgroud)

将返回最小元素及其位置.你如何修复任意二元函数?

这就是我想出的:

min x = z $ foldl' f (e,0,0) es
  where
    (e:es) = toList x
    f (a,ix,r) b = let ix' = ix+1 in if a < b then (a,ix',r) else (b,ix',ix')
    z (a,ix,r) = (a,r)
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我们将repa 1D矩阵转换为list并使用foldl'(来自Data.List)和两个累加器 - 一个用于计算迭代(ix),另一个用于保存min元素(r)的位置.但是使用repa的重点是使用数组,而不是列表!

在repa中,Array类型有两个折叠(foldS和foldP) - 但是它们只能取类型函数(a - > a - > a) - 意思是,我不能将带累加器的元组传递给它.还有遍历,原则上可以将1D数组减少为标量数组:

min x = traverse x to0D min
  where
    to0D (Z:.i) = Z
    min f (Z) = ??? -- how to …
Run Code Online (Sandbox Code Playgroud)

arrays indexing haskell fold repa

7
推荐指数
1
解决办法
1113
查看次数

标签 统计

haskell ×2

arrays ×1

fold ×1

frp ×1

indexing ×1

reactive-programming ×1

repa ×1