haskell 菜鸟的问题

2022-07-11 21:27:26 +08:00
 lqcc
quicksort :: (Ord a) => [a] -> [a]
quicksort [] = []
quicksort (x:xs) =
        let smallerOrEqual = [a | a <- xs, a <= x]
                larger = [a | a <- xs, a > x]
        in quicksort smallerOrEqual ++ [x] ++ quicksort larger

初学菜鸟。请问这个示例程序,迭代是怎么停止的?

1565 次点击
所在节点    程序员
5 条回复
pe200012
2022-07-11 21:39:08 +08:00
pe200012
2022-07-11 21:41:36 +08:00
空列表的时候终止(
Edward4074
2022-07-11 21:48:15 +08:00
smallerOrEqual 和 large 各自为空数组时,进入第一个 case 就停止了
leomayleomay
2022-07-12 03:29:32 +08:00
pattern matching, 第一个
lqcc
2022-07-12 10:41:29 +08:00
@pe200012 @Edward4074 @leomayleomay 多谢,看明白了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/865524

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX