递归
递归
因为递归本身也很熟悉了,所以不再细讲,主要列几个Haskell中应用递归的函数样例。注意,由于Haskell中用递归来实现循环的功能,所以有些递归看着有些别扭,需要适应。
参考书籍: Learn you a haskell
求数列中最大值
1 | maximum' :: (Ord a) => [a] -> a |
replicate
replicate取一个整数x和一个量y,返回一个包含x个y的列表。
1 | replicate' :: Int -> a -> [a] |
take
take x可以从列表中取出前x个元素,形成另一个列表
1 | take' :: (Num i, Ord i) => i -> [a] -> [a] |
reverse
reserve函数取一个列表作为参数,返回反转的列表。
1 | reserve' :: [a] => [a] |
zip
zip可以取两个列表为参数,将其中的每个数捆绑在一起,形成一个二元组的列表
1 | zip' :: [a] -> [b] -> [(a,b)] |
qsort
使用递归的方法,我们可以很容易的构造出
qsort函数--快速排序。
1 | qsort :: (Ord a) => [a] -> [a] |