【发布时间】:2016-06-21 08:30:57
【问题描述】:
编写一个名为
findID的函数,它接受:
- (学生姓氏(字符串)、学生 ID(3 位整数))对的列表,
- 学生姓名
然后返回:
- 与此姓名匹配的学生 ID 列表。
这行得通:
findID xs m = [ snd(x) | x<-xs, fst(x) == m]
结果:
*Main> findID [("josh",123),("becky",456)] "josh"
[123]
但我不想使用列表推导。通过这样的方式:
findID' (x:xs) m
| fst(x) == m = snd(x)
| otherwise = findID' xs
我错过了什么?
【问题讨论】:
-
filter和map? -
您不需要在 Haskell 中的函数参数周围使用括号。您通常应该使用
snd x而不是snd(x)。
标签: list function haskell recursion list-comprehension