dYT*_*YTe 0 lambda haskell anonymous list haskell-prelude
这是功能:
f [] = []
f (h:t) = (\x -> x - h) : f t
Run Code Online (Sandbox Code Playgroud)
它接受一个列表并返回一个匿名函数列表,它们从x中减去每个元素.
显然有一些方法可以用20个字符或更少的字符写这个整个函数.
我试着这样做,map但只是将一个函数应用于列表的每个元素.我也试图替换(-a)无效的匿名函数.
有人有想法吗?
你可以简单地使用:
f :: Num a => [a] -> [a -> a]
f = map subtract
Run Code Online (Sandbox Code Playgroud)
因为subtract :: Num n => n -> n -> n,这意味着我们h将列表中的每个元素映射到一个函数subtract h.从任何给定值中减去h减法.所以.hxsubtract h x == x - h