首页 > 解决方案 > Haskell 递归中的非详尽模式

问题描述

我正在尝试编写一个函数,它可以让我知道列表中每个区域之间的距离。该函数distance将两个区域之间的距离作为Int一个集合数组提供给我,我想遍历整个列表以总结每个区域与其在列表中的追随者之间的距离。

但我得到了

非穷举模式

错误信息。我忽略了什么?该功能distance正在正常工作。

lengthr :: [district] -> Int
lengthr [] = 0
lengthr (a:b:as) = (distance a b) + lengthr (b:as) 

标签: haskellrecursionnon-exhaustive-patterns

解决方案


我在代码中添加了这一行lengthr [a] = 0,以掩盖只剩下一个元素的情况,现在代码按预期工作!


推荐阅读