Haskell - 一些有用的函数

Haskell - 函数式程序员工具箱

map

1
2
3
map :: ( a -> b ) -> [a] -> [b]
map _ [] = []
map f (x:xs) = f x : map f xs

接受两个参数,第一个参数是一个函数,第二个参数是一个列表,返回一个函数。看起来就是很简单的工具函数,实际使用中就可以玩出来很多花里胡哨的东西

1
2
3
4
map (+3) [1,5,3,1,6]
map (++ "!") ["BIFF", "BANG", "POW"]
map (replicate 3) [3..6]
map (map (^2)) [[1,2],[3,4,5,6],[7,8]]

filter

取一个谓词和一个列表,返回由列表中所有符合该条件的元素组成的列表。很像C#中的linq (可恶,为什么C++没有linq)

1
2
3
4
5
filter :: (a -> Bool) -> [a] -> [a]
filter _ [] = []
filter p (x:xs)
| p x = x : filter p xs
| otherwise = filter p xs
1
2
3
filter (>3) [1,5,3,2,1,6,4,3,2,1]
filter (==3) [1,2,3,4,5]
filter even [1..10]

Haskell - 一些有用的函数
http://cvrain.cloudvl.cn/2023/11/28/Haskell/haskell-useful-function/
作者
ClaudeRainer
发布于
2023年11月28日
许可协议