【发布时间】:2012-03-07 16:23:30
【问题描述】:
我正在尝试创建一个执行以下操作的函数:它获取一个列表,例如 [1,4,2,3],它返回一个列表 [3,2,1]。
因为1 - 4 = 3(绝对值)、4 - 2 = 2 和2 - 3 = 1。
我认为除了 abs 值之外,这段代码可以做到这一点。
function :: [a] -> [a]
function [] = []
function (x:xs) = [x - head(xs)] ++ function xs
但它给了我错误,我没有找到任何解决方案。
亲切的问候,
编辑:
谢谢大家,今天学到了很多。事实上,我是一个初学者,我在大学里有一门课程,里面有 prolog、haskell、scala、python、aspectj 和元编程。所以我们每个程序有 2 节课,休息 2 小时,然后有时间做一些练习。
下周一我有考试和 zipwith 等...我们必须编写自己的函数。但是感谢您提供了很好的解释教程,学到了很多东西。这是可行的解决方案:
function :: Num a => [a] -> [a]
function (x:y:xs) = [abs(x - y)] ++ function (y:xs)
function _ = []
【问题讨论】:
-
this question 可能重复。
标签: haskell