我想编写一个函数,该函数接受一个整数列表并返回一个列表,其中每个元素都是负数。
negate :: [Int] -> [Int]
negate xs = foldl (\x xs -> (abs x * (-1)) : xs) [] xs
此函数取反所有数组对象,但也取反数组中所有变量的位置。是什么让此功能反转了位置?
答案 0 :(得分:5)
ERROR: Could not get unknown property 'applicationVariants' for object of type com.android.build.gradle.LibraryExtension.
可以! foldl
是向左折叠的,因此它从列表的初始状态(您以foldl
提供)和列表的最左边元素开始,在列表上起作用,并调用您的函数来否定该元素的状态。然后,它接受下一个最左边的元素并执行相同的操作。但是您每次都在前面添加前缀,这意味着输入的第一个元素最终对应于输出的最后一个元素,因为它是第一个被添加前缀的。
您可能想要[]
,这是从最右边的元素开始的折叠。另外,对于这个特定问题,使用foldr
是更简单的方法。
示例代码:
map