Jim*_*hoi 3 debugging haskell exception
我是haskell的初学者。
现在我正在努力解决负索引异常。
但与其他通用语言不同,在我看来,haskell 没有显示发生异常的行号。
是否可以知道发生异常的行号?
这些天基本上有两种好方法。
HasCallStack通过你的代码自由地散布约束,如
foo :: HasCallStack => Int -> [a] -> a
foo n xs = xs !! n
Run Code Online (Sandbox Code Playgroud)
编译-prof并传递-xcRTS 标志,如
ghc -prof foo.hs && ./foo +RTS -xc
Run Code Online (Sandbox Code Playgroud)
后者更容易,前者使您可以更好地控制哪些东西被认为“足够有趣”以放入堆栈跟踪。