Elm Language Lists and Iteration Filtering a list


List.filter : (a -> Bool) -> List a -> List a is a higher-order function which takes a one-parameter function from any value to a boolean, and applies that function to every element of a given list, keeping only those elements for which the function returns True on. The function that List.filter takes as its first parameter is often referred to as a predicate.

import String

catStory : List String
catStory = 
    ["a", "crazy", "cat", "walked", "into", "a", "bar"]

-- Any word with more than 3 characters is so long!
isLongWord : String -> Bool
isLongWord string =
    String.length string > 3

longWordsFromCatStory : List String
longWordsFromCatStory = 
    List.filter isLongWord catStory

Evaluate this in elm-repl:

> longWordsFromCatStory
["crazy", "walked", "into"] : List String
> List.filter (String.startsWith "w") longWordsFromCatStory
["walked"] : List String