我不知道为什么我的功能不起作用。我浏览了所有关于非详尽功能的帖子,但据我所知,我的功能满足了所有可能的选择。
ascending :: [Int] -> Bool
ascending [] = error "Empty list given"
ascending [x] = True
ascending [x,y] | y>=x = True
| x<y = False
ascending (x:y:xs) | y>=x = (ascending (y:xs))
| x<y = False
结果:
*Main> ascending []
*** Exception: Empty list given
*Main> ascending [1]
True
*Main> ascending [1, 2]
True
*Main> ascending [2, 1]
*** Exception: test01.hs:(51,1)-(56,55): Non-exhaustive patterns in function ascending
它适用于一对,但如果这对不上升,则无效。当我遵循我的代码时,它应该只是返回 False。