我刚刚开始 Haskell 编程,之前从未使用过函数式语言。
我正在尝试使用模式匹配编写一个函数,该函数将测试给定的整数列表是否按升序排列。如果是,它应该返回 true,如果不是,它应该返回 false。
inorder :: [Integer] -> Bool
inorder [] = True
inorder [x] = True
inorder (x:y:t) | x<=y && y<=head t = True
| otherwise = False
这目前仅比较给定列表的前两个元素。
Q1 当列表中前面有一个整数时,我将如何将每个整数与其前面的整数进行比较?
这是家庭作业,我想使用模式匹配而不是保护方程来完成,但我不得不同时使用两者,因为我不确定模式匹配相当于“否则”是什么。
Q2 有可能吗?如果没有警卫,我将如何编写这个函数?
感谢您花时间阅读。如果有任何不清楚的地方,我很抱歉。感谢任何帮助、提示或有用的链接。