28得票5回答
翻转/反转fmap (<$>)?

我发现定义如下内容(%) = flip fmap 我可以像这样编写代码:readFile "/etc/passwd" % lines % filter (not . null) 对我来说,这比另一种选择更有意义:filter (not . null) &lt;$&gt; lines &lt;...

27得票3回答
对于减法,相当于“+1”的是什么,因为“-1”被视为负数?

可能是重复问题: 柯里化减法 我开始我的第一个Haskell项目,这不是从教程中学来的,当然我会在最简单的事情上犯错。 我有以下代码:moveUp y = modifyMVar_ y $ return . (+1) moveDn y = modifyMVar_ y $ re...

26得票4回答
如何将一个有两个参数的 Haskell 函数改写为点无关风格

我在Haskell中有以下函数agreeLen :: (Eq a) =&gt; [a] -&gt; [a] -&gt; Int agreeLen x y = length $ takeWhile (\(a,b) -&gt; a == b) (zip x y) 我正在尝试学习如何编写“惯用”的...

25得票2回答
点无代码更高效还是只是更简洁?

我编写了以下代码,它接收一堆点并使用gloss库将它们绘制在屏幕上。let s = blocks pes pts = map (map mkPt) s {- stitches to points-} lines = map Line pts {-points to li...

25得票4回答
在Scala中使用无点样式的理由

对于函数式编程专家来说,这可能看起来非常明显,但是点无风格在Scala中有什么好处呢?一个能够真正让我相信的例子是,展示如何使用点无风格比非点无风格解决同一问题的代码在某些方面(例如性能、优雅性、可扩展性、可维护性)显着更好。

22得票3回答
理解 Haskell 中无参函数中的 `ap`

我能理解 Haskell 中无点函数的基础知识:addOne x = 1 + x 由于方程两侧都有x,我们对其进行简化:addOne = (+ 1) 令人难以置信的是,原来在不同位置使用相同参数的函数可以被写成无参函数! 让我们以基本示例 average 函数为例:average xs ...

21得票2回答
Haskell中的\x -> (x, x)与join(,)等价的推导是什么?

根据 pointfree 的说法:\x -&gt; (x, x) 等价于:join (,) 这个结果如何推导出来的?

21得票3回答
在Haskell中“重复使用”参数的技巧是什么?

偶尔我会遇到这样的问题,即我想表达“请将最后一个参数重复使用”,例如为了以 pointfree 的风格编写代码或者避免使用 lambda 表达式。例如:sqr x = x * x 可以写成:sqr = doubleArgs (*) where doubleArgs f x = f x x...

21得票7回答
Haskell中的map/zip与列表推导式比较

你最可能写哪种代码?r = zip xs $ map sqrt xs 或者r = [(x, sqrt x) | x &lt;- xs] 互联网上的示例代码似乎表明前者更常见且更受欢迎。

21得票3回答
如何将一个 Ruby 方法转换成块?

有没有一种方法可以简化以下代码? filenames是一个包含文件名的列表(字符串),例如["foo.txt", "bar.c", "baz.yaml"]filenames.map { |f| File.size(f) } 有没有办法将“File.size”转换为proc或块?对于现有对象的...