我无法在我的代码中弄清楚什么函数正在引发(*** Exception: Prelude.!!: negative index
,因为这个异常对错误的描述不是很清楚。有什么方法可以准确地检测到自定义函数正在调用什么!!
并引发此错误。
这是调用时错误的简单可重现示例index_around 0 [1, 2, 3]
,此处的异常文本未描述异常是由函数引发index_before
还是由index_after
函数引发。
index_before :: Int -> [a] -> a
index_before i list = list !! (i - 1)
index_after :: Int -> [a] -> a
index_after i list = list !! (i + 1)
index_around :: Int -> [a] -> (a, a)
index_around i list = (index_before i list, index_after i list)