我发现定义如下内容(%) = flip fmap 我可以像这样编写代码:readFile "/etc/passwd" % lines % filter (not . null) 对我来说,这比另一种选择更有意义:filter (not . null) <$> lines <...
可能是重复问题: 柯里化减法 我开始我的第一个Haskell项目,这不是从教程中学来的,当然我会在最简单的事情上犯错。 我有以下代码:moveUp y = modifyMVar_ y $ return . (+1) moveDn y = modifyMVar_ y $ re...
我在Haskell中有以下函数agreeLen :: (Eq a) => [a] -> [a] -> Int agreeLen x y = length $ takeWhile (\(a,b) -> a == b) (zip x y) 我正在尝试学习如何编写“惯用”的...
我编写了以下代码,它接收一堆点并使用gloss库将它们绘制在屏幕上。let s = blocks pes pts = map (map mkPt) s {- stitches to points-} lines = map Line pts {-points to li...
对于函数式编程专家来说,这可能看起来非常明显,但是点无风格在Scala中有什么好处呢?一个能够真正让我相信的例子是,展示如何使用点无风格比非点无风格解决同一问题的代码在某些方面(例如性能、优雅性、可扩展性、可维护性)显着更好。
我能理解 Haskell 中无点函数的基础知识:addOne x = 1 + x 由于方程两侧都有x,我们对其进行简化:addOne = (+ 1) 令人难以置信的是,原来在不同位置使用相同参数的函数可以被写成无参函数! 让我们以基本示例 average 函数为例:average xs ...
根据 pointfree 的说法:\x -> (x, x) 等价于:join (,) 这个结果如何推导出来的?
偶尔我会遇到这样的问题,即我想表达“请将最后一个参数重复使用”,例如为了以 pointfree 的风格编写代码或者避免使用 lambda 表达式。例如:sqr x = x * x 可以写成:sqr = doubleArgs (*) where doubleArgs f x = f x x...
你最可能写哪种代码?r = zip xs $ map sqrt xs 或者r = [(x, sqrt x) | x <- xs] 互联网上的示例代码似乎表明前者更常见且更受欢迎。
有没有一种方法可以简化以下代码? filenames是一个包含文件名的列表(字符串),例如["foo.txt", "bar.c", "baz.yaml"]filenames.map { |f| File.size(f) } 有没有办法将“File.size”转换为proc或块?对于现有对象的...