函数查找中的非穷尽模式

问题描述

This is a picture of the function defined

我正在尝试在haskell中定义一个函数,该函数给定一个搜索字符串和一个字符串/项对列表,并返回其关联字符串与搜索字符串匹配的项目列表。例如,* module> lookUp“ A” [(“ A”,8),(“ B”,9),(“ C”,5),(“ A”,7)]

应返回[8,7]。 但是,每当我在终端中运行此代码时,它都会返回此错误消息。

函数查找中的非穷尽模式。

有人可以告诉我哪里出了问题以及如何解决吗?

解决方法

模式[(a,b)]仅适用于恰好一个元素的列表。因此,对于具有多个元素的列表,这将不起作用。此外,您不需要为空列表添加大小写,可以这样写:

lookUp :: Eq k => k -> [(k,v)] -> [v]
lookUp input items = [y | (x,y) <- items,x == input]

因此,在这里,我们将为数据中的每对(x,y)检查x == input,并在这种情况下发出列表中的值。