【发布时间】:2017-07-10 18:48:26
【问题描述】:
这是函数:
f [] = []
f (h:t) = (\x -> x - h) : f t
它接受一个列表并返回一个匿名函数列表,从 x 中减去每个元素。
显然有一些方法可以用 20 个字符或更少的字符编写整个函数。
我试图用map 来做这件事,但这只是将一个函数应用于列表的每个元素。我还尝试用 (-a) 替换匿名函数,但也没有用。
有人有想法吗?
【问题讨论】:
-
对codegolf.stackexchange.com来说似乎是一个完美的问题
-
嗯,
(\x -> x - h)可以写成(- h)iirc -
正确的函数不应该是:
f (h:t) = (\x -> x - h) : f t. -
@Carcigenicate 这是 Haskell 语法的一个奇怪的角落。
(- h)表示否定数字h。subtract h相当于那个 lambda。 -
@Carcigenicate 不幸的是,不:
(-h)是一元减号,而不是一个部分!这就是为什么我们有来自Prelude的subtract h。
标签: list haskell lambda anonymous haskell-prelude