Haskell loopupKey

Haskell loopupKey

我正在尝试创建一个函数来查找没有重复键的有序键列表。如果键不存在,它输出“Nothing”,或者如果它存在,如果它是预设的,它输出“Just”,这个值的一个例子如下

  lookupKey "a" [("a",1),("b",2)] == Just 1

这是我目前所拥有的

lookupKey :: Ord k => k -> [(k,v)] -> Maybe v
lookupKey x [] = Nothing
lookupKey x (k,v) 
   | x < k = Nothing
   | x == k 

我对如何完成其​​余代码感到困惑

主要问题是 [[k,v]] 模式。这是一个列表列表,其中内部列表包含两个元素:kv。但这不是二元组。

模式应该是:

lookupKey x ((k, v): kvs)
    | x < k = Nothing
    | x == k = Just …
    | otherwise = …

这里kv是第一个二元组的项,kvs是其余项的列表。所以如果我们调用lookupKey "a" [("a", 1), ("b", 2)],那么x就是"a"k就是"a"v就是1kvs[("b", 2)]。因此,您需要对 kvs.

执行一些递归

我将填写 部分作为练习。