我只想从[1,2,3,4]中的每个列表元素中减去1,如
map (-1) [1,2,3,4] -- does not work
map ((-)1) [1,2,3,4] -- gives [0,-1,-2,-3] which is "-listvalue" + 1
map (\x = x - 1) [1,2,3,4] -- what I want but so verbose
map (+ (-1)) [1,2,3,4] -- well :)
map (flip (-) 1) [1,2,3,4] -- I heard of flip before
(map . flip (-)) 1 [1,2,3,4] -- Kinda nice mapped substration composing thingy
map pred [1,2,3,4] -- OK cheated and won't help with -2
我是否会错过一个“正确”和/或Haskell先生使用的表格?
答案 0 :(得分:4)
您可以使用subtract功能
map (subtract 1) [1,2,3,4]
答案 1 :(得分:3)
你遇到了Haskell设计的一个小瑕疵。表达式(-1)
原则上可以用两种方式解释:
1
。 Haskell与#2相关。为了弥补这一点,我们提供subtract
功能来涵盖案例#1。