码迷,mamicode.com
首页 > 其他好文 > 详细

Haskell 编写几个递归函数 练习 typeclass 模式匹配等

时间:2020-03-20 12:47:53      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:replicat   otherwise   反转   函数   最大值   tail   pre   递归函数   模式匹配   

-- 取list中的最大值
maxiMum' :: (Ord a) => [a] -> a
maxiMum' [] = error "Empty list"
maxiMum' [x] = x
maxiMum' (x:xs)
    | x > maxTail = x
    | otherwise = maxTail
    where maxTail = maxiMum' xs

maxiMum1' :: (Ord a) => [a] -> a
maxiMum1' [] = error "Empty list"
maxiMum1' [x] = x
maxiMum1' (x:xs) = max x (maxiMum1' xs)

-- 构建含n个x的list
replicate' :: (Num i, Ord i) => i -> a -> [a]
replicate' n x
    | n <= 0 = []
    | otherwise = x:replicate' (n-1) x 

-- 取list前n个
take' :: (Num i, Ord i) => i -> [a] -> [a]  
take' n _  
    | n <= 0   = []  
take' _ []     = []  
take' n (x:xs) = x : take' (n-1) xs 

-- 反转list
reverse' :: [a] -> [a]
reverse' [] = []
reverse' (x:xs) = reverse' xs ++  [x]

Haskell 编写几个递归函数 练习 typeclass 模式匹配等

标签:replicat   otherwise   反转   函数   最大值   tail   pre   递归函数   模式匹配   

原文地址:https://www.cnblogs.com/vlyf/p/12530801.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!