haskell 正在尝试匹配组件对中的组件[duplicate]

zzoitvuj  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(103)

此问题在此处已有答案

how to return inputted value when no value is found in list comprehension Haskell(4个答案)
上个月关闭。

lookUp :: Char -> [(Char, Char)] -> Char
lookUp x xs = [if x `elem` xs then tail(xs) else head(xs) | x <- xs]

有一个类型错误,但我不知道为什么。我试图找到该对的第一个组成部分,并返回第二个组成部分,或返回x,如果输入不是一个对的一部分。

ruarlubt

ruarlubt1#

x是一个Char,而xs是一个(Char, Char)元组的列表。elem函数具有以下类型,所以是的,你会得到一个类型错误。

elem :: (Foldable t, Eq a) => a -> t a -> Bool

这个函数返回Maybe Char更有意义,因为你要搜索的键可能不存在于列表中。我们知道这个键不会存在于空列表中。否则我们可以递归地遍历列表,测试每个元组。

lookup :: Char -> [(Char, Char)] -> Maybe Char
lookup _ [] = Nothing
lookup ch ((x, ch'):xs) 
  | ch == x =   -- fill in the blanks
  | otherwise = -- fill in the blanks

相关问题