【问题标题】:return maybe value when referencing key-value list引用键值列表时可能返回值
【发布时间】:2013-01-02 10:03:46
【问题描述】:

我在 haskell 中使用键值列表,当在列表中找不到键而不是异常时,我想获取值 Nothing。例如:

*> x
fromList [(1,[(6,14.0),(3,9.0),(2,7.0)]),(2,[(4,15.0),(3,10.0)]),(3,[(6,2.0),(4,11.0)]),(5,[(4,6.0)]),(6,[(5,9.0)])]
*> x ! 7
*** Exception: Map.find: element not in the map

可以这样做吗?

【问题讨论】:

    标签: haskell


    【解决方案1】:

    LMHTFY:Map k a -> k -> Maybe a

    第一个结果是Map.lookup,这就是你想要的。

    【讨论】:

    • flip lookup。我从来不理解Data.Map 中的参数顺序。
    • @DanielFischer 参数订单或多或少是对lookup 的洗牌。但是对于修改地图的操作,当前的顺序显然更好。它使您可以仅通过函数组合在地图上组合多个操作。
    • @Carl 我不同意。 insert 的参数顺序显然不是最理想的。每次构建Map,就必须编写笨拙的foldl' (flip . uncurry $ insertWith' (+))。布莱赫。
    • @DanielFischer 在大量使用我编写的代码的Map 中,我从未做过任何类似的事情。我想我只是没有那个用例。
    • @Carl 显然你没有那个用例。但是,每当您使用一长串键/值对更新Map 时,(严格)左折叠是必须的。当我使用Maps 时,这种情况经常发生。
    猜你喜欢
    • 2021-12-17
    • 1970-01-01
    • 2011-04-18
    • 2021-05-19
    • 2013-02-02
    • 2013-06-10
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    相关资源
    最近更新 更多