这是功能:
f [] = []
f (h:t) = (\x -> x - h) : f t
它接受一个列表并返回一个匿名函数列表,这些函数从 x 中减去每个元素。
显然有一些方法可以用 20 个字符或更少的字符来编写整个函数。
我试图这样做,map
但这只是将一个函数应用于列表的每个元素。我还尝试替换(-a)
也不起作用的匿名函数。
有人有想法吗?
这是功能:
f [] = []
f (h:t) = (\x -> x - h) : f t
它接受一个列表并返回一个匿名函数列表,这些函数从 x 中减去每个元素。
显然有一些方法可以用 20 个字符或更少的字符来编写整个函数。
我试图这样做,map
但这只是将一个函数应用于列表的每个元素。我还尝试替换(-a)
也不起作用的匿名函数。
有人有想法吗?
您可以简单地使用:
f :: Num a => [a] -> [a -> a]
f = map subtract
因为subtract :: Num n => n -> n -> n
,这意味着我们h
将列表中的每个元素映射到一个函数subtract h
。减去从任何给定值中h
减去。所以。h
x
subtract h x == x - h