Haskell练习题求助:使用模式匹配判断坐标点是否在坐标轴上
实现代码
-- 显式类型签名:约束输入的坐标元素为可判等的数值类型,返回布尔值 onAxis :: (Num a, Eq a) => (a, a) -> Bool -- 模式匹配:x坐标为0的点,直接返回True onAxis (0, _) = True -- 模式匹配:y坐标为0的点,直接返回True onAxis (_, 0) = True -- 模式匹配:其余所有情况返回False onAxis _ = False
实现说明
- 全程仅使用Haskell原生的多定义模式匹配实现,没有调用
==等相等性测试函数,也没有使用if...else/case...of类分支语句,完全符合题目要求 - 匹配逻辑完全覆盖坐标轴判定规则:只要x或y任意坐标为0,点就在坐标轴上,否则不在
- 所有测试用例均能通过:
onAxis (0, 0)匹配第一个分支返回TrueonAxis (0, 100)匹配第一个分支返回TrueonAxis (50, 0)匹配第二个分支返回TrueonAxis (-12, 0)匹配第二个分支返回TrueonAxis (4, 5)匹配第三个分支返回False,因此not (onAxis (4, 5))返回True
内容的提问来源于stack exchange,提问作者maros
相关产品推荐
相关产品推荐

