【发布时间】:2016-01-22 18:05:01
【问题描述】:
首先,我创建了一个类型 StudentMark,它是一个元组,首先是一个字符串,其次是一个 Int。
type StudentMark = (String, Int)
这是我的 capMarks 函数:
capMarks :: [StudentMark] -> [StudentMark]
capMarks [cMarks] = [(st, mk) | (st, mk) <- [capMark cMarks]]
这是我的 capMark 函数:
capMark :: StudentMark -> StudentMark
capMark (st, mk)
| mk > 39 = (st, 40)
| mk < 40 = (st, mk)
它应该返回:
[("Jo", 37), ("Sam", 40)]
来自:
capMarks [("Jo", 37), ("Sam", 76)]
但只有当我在函数中输入 1 个参数时才会返回正确和预期的响应,例如:
capMarks [("Jake", 50)]
或者
capMarks [("Jake"), 30]
但是使用两个(或更多)应该只是告诉我 capMarks 函数中有一个非穷举模式。
【问题讨论】:
-
如果我的任何术语有问题,请多多包涵,因为我是 Haskell 和 stackoverflow 的新手
-
让我们后退一步。你想用这些功能完成什么?这段代码的目的是什么?您实际上想用这段代码解决什么问题?
-
它应该返回元组,其中超过 40 的整数将根据 capMark 函数返回为 40。即
capMark ("Steve", 100)将返回("Steve", 40)所以 capMarks 函数应该做的是使用 capMark 函数使用列表理解对元组列表执行此操作。
标签: haskell list-comprehension non-exhaustive-patterns