如何简化此功能?

时间:2017-07-10 18:48:27

标签: list haskell lambda anonymous haskell-prelude

这是功能:

csv.reader()/csv.writer()

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

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

我尝试用f [] = [] f (h:t) = (\x -> x - h) : f t 来做,但这只是将一个函数应用于列表的每个元素。我还尝试用map取代匿名函数,但这也无效。

有人有想法吗?

1 个答案:

答案 0 :(得分:7)

您可以简单地使用:

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