gpt4 book ai didi

haskell - 使用 Data.Map 时如何知道哪个元素不在 Map 中!

转载 作者:行者123 更新时间:2023-12-01 09:06:28 26 4
gpt4 key购买 nike

我有一个 Haskell 程序,它在多个地方使用 Data.Map.!。执行程序后,有错误消息说 element not in the map。我想知道如何知道在程序的哪一行使用发出错误消息的 Data.Map.! 以及在 map 中找不到哪个元素?

最佳答案

(!) 运算符不适用于查找可能不在 map 中的内容。虽然您可以在 IO monad 中捕捉到由此产生的错误,但这将是一种非常糟糕的风格。

改为使用lookup,它返回Maybe a,特别是当元素不在 map 中时返回Nothing

编辑:好的,我误读了你的问题。保留原始答案以防万一,但假设 (!) 确实是您想要的并且您正在调试,您可以做几件事:

  1. 您可以在导入中暂时隐藏 (!),而是定义您自己的版本,使用 lookup 并引发更有用的错误(可能包含您尝试查找的键,如果它有一个 Show 实例)。

  2. 您可以在 GHCi 调试器中运行代码,并使用 -fbreak-on-exception 停止发生查找的代码。

  3. 您可以使用 Debug.Trace 模块将跟踪语句添加到您的代码中。

关于haskell - 使用 Data.Map 时如何知道哪个元素不在 Map 中!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6780838/

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