Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Haskell - A brief introduction
Search
MetaBroadcast
June 13, 2012
Programming
0
84
Haskell - A brief introduction
Talk given by Fred van den Driessche on 13-06-2012 at MetaBroadcast.
MetaBroadcast
June 13, 2012
Tweet
Share
More Decks by MetaBroadcast
See All by MetaBroadcast
PhotoGlut
metabroadcast
2
360
Machine learning: boldly going where Twitter's APIs don't
metabroadcast
0
130
monitoring: it gets better
metabroadcast
1
570
The ABCs of MetaBroadcast APIs
metabroadcast
0
200
APIs for app developers
metabroadcast
1
140
Polishing Varnish
metabroadcast
0
820
Atlas - 3.0 to 4.0
metabroadcast
0
240
Atlas - owl vs deer
metabroadcast
0
240
Storm - an overview
metabroadcast
0
120
Other Decks in Programming
See All in Programming
エンジニア向け採用ピッチ資料
inusan
0
170
0626 Findy Product Manager LT Night_高田スライド_speaker deck用
mana_takada
0
110
Deep Dive into ~/.claude/projects
hiragram
9
1.6k
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
550
Goで作る、開発・CI環境
sin392
0
140
C++20 射影変換
faithandbrave
0
540
Select API from Kotlin Coroutine
jmatsu
1
190
Is Xcode slowly dying out in 2025?
uetyo
1
210
Node-RED を(HTTP で)つなげる MCP サーバーを作ってみた
highu
0
110
Team topologies and the microservice architecture: a synergistic relationship
cer
PRO
0
1.1k
「ElixirでIoT!!」のこれまでとこれから
takasehideki
0
370
5つのアンチパターンから学ぶLT設計
narihara
1
120
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
17
940
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Visualization
eitanlees
146
16k
Become a Pro
speakerdeck
PRO
28
5.4k
Designing Experiences People Love
moore
142
24k
How to train your dragon (web standard)
notwaldorf
94
6.1k
Side Projects
sachag
455
42k
Stop Working from a Prison Cell
hatefulcrawdad
270
20k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Six Lessons from altMBA
skipperchong
28
3.9k
Raft: Consensus for Rubyists
vanstee
140
7k
Transcript
Haskell A Brief Introduction
Pure Functional Lists Lazy • • •
Built-in Types Numbers: 1, 1.234 Booleans: True, False Characters/Strings: 'a',
"asdf" Lists: [1,2,3] Tuples:("jim", 25) • • • • •
Functions double x = 2 * x > double 5
10
Control max x y = if x > y then
x else y max x y | x > y = x | otherwise y
Lists [] 1 : [2, 3] = [1, 2, 3]
[1, 2] ++ [3, 4] = [1, 2, 3, 4] head [1, 2, 3] = 1 tail [1, 2, 3] = [2, 3]g • • • • •
Pattern Matching dblAll [] = [] dblAll (x:xs)= double x
: dblAll xs
Higher-order functions > map double [1, 2, 3] [2, 4,
6] map f [] = [] map f (x:xs) = f x : map f xs
Function Types > :t double double :: Num a =>
a -> a > :t (*) (*) :: Num a => a -> a -> a > :t map map :: (a -> b) -> [a] -> [b]
Currying > :t (*) (*) :: Num a => a
-> a -> a > :t (2*) (2*) :: Num a => a -> a double = 2* dblAll = map (2*)
Data Types data Bool = True | False data Maybe
a = Just a | Nothing data Either a b = Left a | Right b data Tree a = Empty | Node a (Tree a) (Tree b ) • • • •
yesOrNo True = "yes" yesOrNo False = "no" traverse Empty
= [] traverse (Node v l r) = (traverse l) ++ v : traverse r
Laziness fib c n = c : fib n (c
+ n) > fib 0 1 [0, 1, 1, 2, 3, 5, 8, 13, 21 ... > take 5 (fib 0 1) [0, 1, 1, 2, 3]
Laziness > (fib 0 1) !! 900 54877108839480000051413673948383714443800