【发布时间】:2014-07-27 07:32:42
【问题描述】:
我正在尝试定义一个函数来查找列表中相邻数字之间的最小距离
类似这样的:
minNeighborsDistance [2,3,6,2,0,1,9,8] => 1
我的代码如下所示:
minNeighborsDistance [] = []
minNeighborsDistance (x:xs) = minimum[minNeighborsDistance xs ++ [subtract x (head xs)]]
虽然这似乎可以运行,但一旦我输入一个列表,我就会收到一个异常错误。
我是 Haskell 的新手,如果能在这件事上提供任何帮助,我将不胜感激。
【问题讨论】:
-
您在空箱中返回一个列表......而您的示例返回一个数值。您的意思是返回 0 还是
Nothing?似乎你想用一个“neighborsDistance”函数来打破它,你可以应用最小值、最大值等。(例如neighborsDistance [1 2 4] = Just [1 2]和neighborsDistance [1] = Nothing)(我只是在阅读初学者此刻的 Haskell 问题,刚开始......) -
另外一个小提示:如果您可以使用前者,那么使用
y :将元素添加到列表中几乎总是比使用++ [y]更有效。
标签: haskell