3.
Functional programming with Haskell
(1..4).collect {|i| i*i }
map (λi → i ∗ i) [1 . . 4] -- [1,4,9,16]
(1..10).inject {|sum, n| sum + n}
foldr (λn sum → sum + n) 0 [1 . . 10] -- 55
4.
What is Haskell?
Haskell is a
• strongly typed
• lazy
• purely functional
programming language
5.
Everything is a function
• No “assignment”
• Referential transparancy
• Partial application, no parentheses needed
a=5
a=6 -- Invalid!
squares xs = map (λx → x ∗ x) xs
6.
Why should I learn Haskell?
• Functional Programming gives you a fresh way to look at
problems
• Even if you don’t use a functional language
• Python, Ruby, C# all use ideas from FP
• Google’s Map/Reduce and Hadoop are large scale FP
8.
Some standard functions
sum [ ] =0
sum (x : xs) = x + sum xs
product [ ] =1
product (x : xs) = x ∗ product xs
and [ ] = True
and (x : xs) = x ∧ and xs
9.
Everything is a fold!
foldr (⊕) e [ ] =e
foldr (⊕) e (x : xs) = x ⊕ (foldr (⊕) e xs)
sum = foldr ( + ) 0
product = foldr ( ∗ ) 1
and = foldr ( ∧ ) True
10.
Even map!
map f = foldr (λx tail → (f x) : tail) [ ]
11.
Inﬁnite lists...
primes = sieve [2 . . ]
sieve (p : xs) = p : sieve [x | x ← xs
, x ‘mod‘ p ≡ 0
]
13.
What we didn’t tell you
• Function composition
• Types
• Purity and I/O
• Monads
• Foreign Function Interface
• ...
14.
Haskell in the Real World
• Large applications (XMonad, Darcs, GHC, Yi)
• Lots of libraries (Today on hackage: 814 libraries and
programs)
• Used by large companies (Credit Suisse, Galois, Microsoft,
ABN Amro . . . )
• Lots of ways to learn Haskell ((free) textbooks, university
courses, haskell wiki, blogs)
15.
Functional programming
• ... sharpens your brain
• ... is lots of fun
• ... can help you become a better programmer
16.
More information
• http://haskell.org
• http://hackage.haskell.org
• http://book.realworldhaskell.org/
• http://tupil.com
A particular slide catching your eye?
Clipping is a handy way to collect important slides you want to go back to later.
Clipping is a handy way to collect and organize the most important slides from a presentation. You can keep your great finds in clipboards organized around topics.
Be the first to comment