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]
``````