-- 自己写一些安全的列表函数,确保它们不会出错。
safeHead :: [a] -> Maybe a
safeHead [] = Nothing
safeHead xs = Just $ head xs
safeTail :: [a] -> Maybe [a]
safeTail [] = Nothing
safeTail xs = Just $ tail xs
safeLast :: [a] -> Maybe a
safeLast [] = Nothing
safeLast xs = Just $ last xs
safeInit :: [a] -> Maybe [a]
safeInit [] = Nothing
safeInit xs = Just $ init xs
map' :: (a -> b) -> [a] -> [b]
map' f (x: xs) = f x : map f xs
map' _ [] = []
asInt_fold :: [Char] -> Int
asInt_fold xs = foldl step 0 xs
where step x y = x * 10 + (digitToInt y)
-- Prelude下面的函数 concat 将一个列表的列表连接成一个单独的列表
concat' :: [[a]] -> [a]
concat' = foldr step []
where step x y = x ++ y
-- 写出你自己山寨的 takeWhile 函数,首先用显式递归的手法,然后改成 foldr 形式.
takeWhile' :: (a -> Bool) -> [a] -> [a]
takeWhile' f (x: xs)
| f x = x: takeWhile' f xs
| otherwise = []
takeWhile'' :: (a -> Bool) -> [a] -> [a]
takeWhile'' f = foldr step []
where step x y
| f x = x: y
| otherwise = []
RWH 第四章
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 第四章 比病更难治好的是人 生完宝宝,女性小腹能否尽量回复往日的弹性和紧绷,除了个人体质等先天因素,关键是看你在孕...
- 第四章 宫外孕:妈妈知道你想留下来,但你太性急 多次的输卵管通液,会破坏输卵管的纤毛功能,可能把宫腔的一些细菌、内...
- 1.《超级个体》 话题:“职场上没有人带,该怎么办?” 做自己的师傅 别抱怨:没人带很正常,有人带是福分 主动:主...