Haskell - List Filter in Haskell
Github: ArrayFilter.hs
We’ll continue list manipulation by considering how to filter a list.
Specifically, given a number n
and an array, we’ll return all elements of the array less than n
.
First we declare the type
of our function, which takes a number and an array, and returns an array.
type ArrFilter = Int -> [Int] -> [Int]
Using Recursion
f :: ArrFilter
f _ [] = []
f n (x:xs) =
if x < n
then x : f n xs
else
f n xs
f 10 [2,4,6,8,10,12,14]
[2,4,6,8]
Using ListComp
List comprehensions might look a bit familiar if you’ve used them in Python before.
f2 :: ArrFilter
f2 n arr = [num | num <- arr, num < n]
f2 10 [2,4,6,8,10,12,14]
[2,4,6,8]
Using Filter
f3 :: ArrFilter
f3 n arr = filter (< n) arr
f3 10 [2,4,6,8,10,12,14]
[2,4,6,8]
Using Filter - Short
f4 :: ArrFilter
f4 n = filter (< n)
f4 10 [2,4,6,8,10,12,14]
[2,4,6,8]
Using Filter - Shorter
f5 :: ArrFilter
f5 = filter . (>)
f5 10 [2,4,6,8,10,12,14]
[2,4,6,8]