gpt4 book ai didi

ghci 显示执行堆栈

转载 作者:行者123 更新时间:2023-12-03 14:49:01 24 4
gpt4 key购买 nike

所以我正在完成 Real World Haskell 的一些初始章节练习,我想知道 GHCi 中是否有一个选项可以让它在每个递归调用上显示带有参数的函数评估。例如,我写了一个简单版本的“map”,当我应用它时,我希望 GHCi 显示每个带有实际参数的递归调用(希望是表达式结果)。可以让我了解幕后发生的事情。

附言在我写这篇文章时,我有一种感觉,它可能会受到 haskell 执行模型的懒惰的限制,如果我错了,请纠正我。

最佳答案

您可以为此使用引擎盖:

import Debug.Hood.Observe

map2 f [] = []
map2 f (x:xs) = f x : (observe "map2" $ map2) f xs

main = runO $ print $ map2 (+1) ([1..10] :: [Int])

当您运行它时,它将打印对 map2 的每个调用以及相应的参数和返回的结果。你会看到类似的东西:
.
.
.
-- map2
{ \ { \ 10 -> 11
, \ 9 -> 10
} (9 : 10 : [])
-> 10 : 11 : []
}
-- map2
{ \ { \ 10 -> 11
} (10 : [])
-> 11 : []
}
-- map2
{ \ _ [] -> []
}

更多信息请查看 examples .

关于ghci 显示执行堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3225472/

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