Example code:
add a b = a + b
main = do
print(add 1 3)
> :type add
add :: Num a => a -> a -> a
Lists
[1, 4..10] -- [1, 4, 7]
let list = [1..10]
head list -- 1
tail list -- [2, 3, 4, ... 10]
filter even list -- [2, 4, 6, 8, 10]
Tuples
names = ("a" "b")
fst names -- "a"
snd names -- "b"
Expressions
canIVote age = do
let msg = if age > 17
then "please vote"
else "not yet"
print(msg)
Currying
add a b = a + b
-- add :: Num => a -> a -> a
Lazy evaluation
-- Create infinite list and take 10 from it
numbers = 1 : map (+1) numbers
take 10 numbers