我目前正在学习如何在Haskell中使用递归,并试图了解如何遍历整数列表中的每个元素并对它们进行否定。到目前为止,我可以这样做,但只在列表的最后一个元素上,所以我知道错误在最后一行。检查列表中的每个元素,而不仅仅是最后一个元素,最好的方法是什么?
negation :: [Int] -> [Int]
negation [] = []
negation [n] = [-n]
negation(x:xs) = negation xs发布于 2016-02-08 18:28:35
尝试使用cons运算符:将负数放在列表的前面。
negation (x:xs) = -x : negation xs如果你这样做,你可以去掉第三行。
发布于 2016-02-08 18:47:44
编写函数的最佳方法是:
negation :: [Int] -> [Int]
negation xs = map negate xs
{- Example:
>>> map negate [1..5]
[-1,-2,-3,-4,-5]
-}练习:编写您自己的map版本
myMap :: (a -> b) -> [a] -> [b]
myMap _ [] = _fillMeIn
myMap f (x:xs) = _fillMeIn发布于 2016-02-08 19:44:07
简单的地图:
Prelude> let negatList= map (*(-1))示例:
Prelude> negatList []
[]
Prelude> negatList [1]
[-1]与递归:
negation :: [Int] -> [Int]
negation [] = []
negation(x:xs) = -x:negation xshttps://stackoverflow.com/questions/35276592
复制相似问题