0

这是功能:

f []      = []
f (h:t)   = (\x -> x - h) : f t

它接受一个列表并返回一个匿名函数列表,这些函数从 x 中减去每个元素。

显然有一些方法可以用 20 个字符或更少的字符来编写整个函数。

我试图这样做,map但这只是将一个函数应用于列表的每个元素。我还尝试替换(-a)也不起作用的匿名函数。

有人有想法吗?

4

1 回答 1

7

您可以简单地使用:

f :: Num a => [a] -> [a -> a]
f = map subtract

因为subtract :: Num n => n -> n -> n,这意味着我们h将列表中的每个元素映射到一个函数subtract h。减去从任何给定值中h减去。所以。hxsubtract h x == x - h

于 2017-07-10T18:52:13.860 回答