gpt4 book ai didi

haskell - 检测什么函数引发了异常 Prelude。!! : negative index

转载 作者:行者123 更新时间:2023-12-05 01:25:02 26 4
gpt4 key购买 nike

我无法在我的代码中弄清楚是什么函数引发了 (*** 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)

最佳答案

有几种方法可以用来调试 haskell 代码:

  • 使用Debug.Trace无论您在哪里使用 trace 函数,它都会将消息记录到 stderr。它需要修改您的代码,并且由于 trace 是一个不纯的函数(使用 unsafePerformIO 隐藏了 IO),您应该谨慎使用它。
  • 使用-xc RTS使用 -prof -fprof-auto 编译后的标志,它会在引发异常时为您提供准确的调用堆栈。
  • 使用GHCi debugger .可以找到如何使用它的一个很好的例子 here .

关于haskell - 检测什么函数引发了异常 Prelude。!! : negative index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70989776/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com