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

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

16得票2回答
有没有更好的方式用无点符号表示绝对误差函数?

在点实际符号表示下: absoluteError x y = abs (x-y) 一个不清楚的点无符号示例: absoluteError' = curry (abs . uncurry (-))

7得票2回答
能否有人解释一下 ((.)$(.)) (==) 1 (1+) 0 的含义?

我在 Haskell.org 上发现了这个点无风格函数,被称为“the owl”。 ((.)$(.)) 它的类型签名是 (a -> b -> c) -> a -> (a1 -> b) -> a1 -> c。 它等价于 f a b c...

10得票1回答
将表达式转换为pointfree风格(Haskell)

我写了这段代码,现在需要将其重写为pointfree风格:num_of_occ ele list = length(filter(==ele)list) 于是我做了这个:num_of_occ ele = length . filter((==)ele) 它有效。然后我做了这个:num_of_...

11得票2回答
`ap zip tail`表达式是如何工作的?

我在想如何将f x = zip x (tail x)改写成点-free形式。于是我使用了pointfree程序,得到的结果是f = ap zip tail,其中ap是Control.Monad中的函数。我不理解这个点-free定义是如何工作的。如果可以从类型的角度理解它,我希望我能理解它。im...

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

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

30得票4回答
在Haskell中点无风格地将多个函数应用于相同的值

有一天我感到无聊,想要锻炼一下我的大脑,于是我决定做99个Haskell问题,但我限制自己只使用点式风格。在使用点式风格时,经常出现一个问题:如果您希望将多个函数应用于相同的值,同时保持每个结果作为独立实体,该怎么办?使用指向符号:foobar x = [id x, reverse x] 而我...

9得票2回答
为什么在Haskell中点阵风格即使有许多点也被称为无点风格?“point-free”这个术语的起源是什么?

我目前正在阅读《Haskell趣学指南》,在第85页上看到了“无点样式”的概念。然而,fn函数里充满了点!这让我很困惑。 为什么这种写函数的方式被称为“无点样式”,而实际上它充满了点? 我应该如何理解“无点样式”这个概念?它是在哪个方面“无点”的? “无点样式”这个术语源于何处?也许来自一...

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

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

11得票3回答
向我解释(.)(.)的含义。

我正在学习 Haskell,虽然我很喜欢这门语言,但我发现 Pointfree 风格完全无法阅读。我遇到了下面这个只包含 ASCII 字符的函数。f = (.)(.) 虽然我了解它的类型签名和它的作用,但我却无法理解为什么它这样做。所以,请问有人能为我写出它的非点释放版本,并且可以逐步回到点释...