Introduction To Haskell
List Comprehensions

Introduction

List comprehensions are a useful way of creating lists in Haskell.

WinGHCI

The list comprehension starts with a definition of the output of the list. The pipe separates this from the qualifier for our list comprehension. In this case, we are saying that the local variable x is drawn from the list of numbers 1 to 10.

We can adapt this further by adding a predicate (Boolean expression) to the end of the list comprehension. This is separated from the previous by a comma.

WinGHCI

The predicate we have added means that our values of x are the even numbers drawn from the list.

You can have more than one predicate and can draw numbers from more than one list.

WinGHCI

This list comprehension gives a list of co-ordinate pairs that satisfy the equation y = 2x + 1. The co-ordinate pairs in this example are a tuple. Using square brackets instead of curved and you get a list of lists.

Here is an infinite list of triangular numbers, defined using a list comprehension.

trinum = [sum[1..x] | x <- [1..]]

WinGHCI