Difference between revisions of "Cookbook/Lists"

From HaskellWiki
Jump to navigation Jump to search
(content got moved)
Line 1: Line 1:
In Haskell, lists are what Arrays are in most other languages. Haskell has all of the general list manipulation functions, see also <hask>Data.List</hask>.
 
 
<haskell>
 
head [1,2,3] --> 1
 
tail [1,2,3] --> [2,3]
 
length [1,2,3] --> 3
 
init [1,2,3] --> [1,2]
 
last [1,2,3] --> 3
 
</haskell>
 
 
Furthermore, Haskell supports some neat concepts.
 
 
= Infinite lists =
 
<haskell>
 
Prelude> [1..]
 
</haskell>
 
 
The list of all squares:
 
<haskell>
 
square x = x*x
 
squares = map square [1..]
 
</haskell>
 
 
But in the end, you probably don't want to use infinite lists, but make them finite. You can do this with <hask>take</hask>:
 
 
<haskell>
 
Prelude> take 10 squares
 
[1,4,9,16,25,36,49,64,81,100]
 
</haskell>
 
 
= List comprehensions =
 
 
The list of all squares can also be written in a more comprehensive way, using list comprehensions:
 
 
<haskell>
 
squares = [x*x | x <- [1..]]
 
</haskell>
 
 
List comprehensions allow for constraints as well:
 
 
<haskell>
 
-- multiples of 3 or 5
 
mults = [ x | x <- [1..], mod x 3 == 0 || mod x 5 == 0 ]
 
</haskell>
 

Revision as of 13:42, 23 April 2009