首页 > 解决方案 > 在绑定结果的列表中查找元素?

问题描述

说我有清单[("sd", 55), ("s", 2), ("fgff", 23), ("s", 999)]。如何找到第一次出现("s", v)并绑定v到关联值?所以例如someFunc "s" mylist会返回2。理想情况下,我将能够进行模式匹配并执行("s", v) = ...

我知道我可以创建一个本身使用模式匹配的递归函数,但我正在寻找一种更简洁的方法来利用 Haskell 的已定义函数,就像标准前奏中的那些:))

标签: haskell

解决方案


我假设您知道该条目存在于您的列表中l。在这种情况下,您可以使用列表推导:

v = head[v | ("s", v) <- l] 

或者(以及我更喜欢的方式)lookup基本上将一对列表解释为字典,第一个条目作为键,第二个条目广告对应的值:

Just v = lookup "s" l 

请注意,lookup返回值被包裹在 aMaybe中以处理该值不存在的情况。


推荐阅读