Haskell
5 4
Hal Daum´e III
i
&
{
V
,
Google
3 N
b
q
2007
:
8
A
23
2
Copyright (c) Hal Daume III, 2002-2006. The preprint version of this
tutorial is intended to be free to the entire Haskell community. It may be
distributed under the terms of the GNU Free Document License, as permission
has been granted to incorpor ate it into the Wikibooks projects.
3
w
e
)
M
k
g
h
1
u
W
h
`
!
Z
u
k
g
1
o
0
+
;
S
+
;
#
&
A
?
Q
?
B
k
g
,
a
D
Haskell
<
8
|
u
\
)
M
k
g
h
1
u
y
+
)
M
k
g
h
1
u
z
#
l
G
B
{
5
a
Haskell
3
A
D
℄
k
Yet Another Haskell Tutorial
i
z
#
%
+ a z
#
Q
P
B
v
t
Goolge
2 M
8
W
M
i
z
#
8 o
a
p
2
W
Æ
f
8
a J B
8
-
L
v
#
3
W
T
J
<
f
Æ
8
a
9
5
8
7
a
2007
9
8
+
4
1
Æ
*
Haskell
1
u
k
+
8 u
Haskell
; k
1
u
f
.
k
p
. 8
a
G
k
Haskell
1
u
Q
)
M
k
g
h
.
G
#
,
E
4
;
k
r
;
(
`
L
)
8
(
.
1
k C G
k
g
h
;
D
R
,
Haskell
1
u
k
g
h
.
Æ
E
4
7
2
"
T
&
8
/
|
#
1 ;
℄
^
8
8
(
1 +
}
r
Windows
/
Unix
8
G
u
;
(
W
g
T
&
8
i
m
,
q
m
(
#
~
).
m
Haskell
n
?
Haskell
1
u
0 h
C
_
)
M
; k
1
u
. Haskell
0 h
z
b
d
(lazy),
b
8
4
z
A
+
h
`
Æ
(
G
J
^
G
%
h
`
.
C
_
R
8
k
d
(strict).
"
{
; k
1
u
(C,C++,Java, ML)
6
2
"
k
r
h
`
U
.
J
r
1
u
z
4
,
(
W
h
`
"
8
b
}
6
L
h
`
. (
b
S
L
9
5
8
G
z
g
}
#
A
;
^
\
f
!
”
V
L
u
”–
L
u k
g
z
G
2
"
4
). Haskell
0 h
U [ d
(pure)
h
G
D
e
g
&
"
(
|
0
}
(side-effect)
8
G 8
m
&
"
.
`
,
C
t
Q *
)
M
,
(
g
&
"
~
,
p
=
z
(
=
i
)
M
,
(
g
&
"
).
,
|
(
g
&
"
; k
1
u
8
Æ
(
B
Æ
;Haskell
1
u
2
"
Monads
f
(
,
(
g
&
"
h
`
k
g
z
Z
t
Q
C
2
" |
z
V
4
E
\
k
.(
+
0
J
1
u
z
%
C
/
C
t R
{
Monads
Z
Q
a (
IO
Z
).
Haskell
1
u
%
)
l
(functional language)
k
g
E
\ D
+
M
k
Æ
)
M
h
`
.
b | E
\
!
Z
G
+
?
1
u
(
C
/
Java)
E
\
J
-
\
k
g
E
\
8
#
n
\
8
m
p
s
i
f
-
P
1
u
*
h
t g
l
(imperitive language).
Haskell
e
_
Haskell
1
u
^
1
"
,
1
u
h
a
Q
f
I
.
; #
I
Haskell98
+
}
:
1987
9
9
J
D
V
x
D
t
S )
\
k
)
M
; k
1
u
/ h
`
W
w
8
k
H
L
(FPCA’87),
L
r
k
G
^
?
/
J
)
M
; k
q
2 (
,
B
|
\
r
)
M
; k
1
u
,
f
( b
P
1
u
,
(
D
X
5
b
/
1
.
1
L
i
|
g
o
0
% +
{
|
" 1
u
)
M
1
u
U
2
"
A
[
B
v
.
L
0
.
i
a
8
L
Q
h
b
~
" 1
u
,
G
<
+
F
Æ
V
U
F
,
/
z
z
"
3
J
u
$
U
w
,
G
℄
g 2
"
)
M
1
5
u
.
1
k
I
b
8
L
>
b
"
:
M
[
℄
k
n
Haskell B.
Curry
)
M
; k
1
u
Haskell. Haskell
8
) .
)
M
k
g
h U
w
M
k
n
o
8
L
+
?
8
h
;
>
K
1
u
:
•
h
9
1
+
k
,
8
s
/
"
,
(
L
8
.
•
h
z
"
2
"
[
4
1
L
/
1
I
.
•
h
o
8
℄
.
0
2 9
/
?
o
1
u
C
^
g
Æ <
J
H
W
/
?
.
•
h
U
+ (
U
0
U
F
.
•
o
w
)
M
1
u
G 8
B
~
A
.
o
8
L
`
J
Haskell
1
u
U
w
A
1
u
h
%
I
s
#
,
C
3
Q
t
? 1
=
k
s
#
i
"
1
u
M
V
Q
=
|
. Haskell
1
u
%
Q
}
/
J
G
? "
z
=
.
1997
9
,
t
?
k
4
! 1
1
u
h
(
"
! 1
8
Haskell1.4).
J
1997
9
(
T t
_
3
Haskell
1
u
L
0
.
H
$
.
Haskell
1
u
! 1
;
b |
$
.
1
u
0 h
”Haskell98”,
8
1
k
v
.
Haskell98
1
u
F
Haskell1.4
U
w
,
%
k
P
u A
,
C
L
u
k
P
I
.
”
$
.
”
'
8
1
u
/
?
a J
Q
t
b
+ i
m
Haskell98
+
}
T
.
7
Haskell
1
u
+
}
r
(
s
1
u
,
d
h
Prelude
?
C
.
Haskell98
J
H
-
J
?
3
B
k
g
6
i
C
)
M
(
t
A
8
A
+
C
/
C
t
/
0
T
&
8
u
<
&
"
).
"
2
b
P
k
g
9
"
T
A
)
M
C
8
8
.
,
r
8
L
3
3
v
.
t
Haskell98
)
M
C
.
B
m
~
Haskell
n
?
>
7
J B
8
1
k
5
k
7
A
Haskell
Y
x
.
2
"
Haskell
1
u
[
%
3
B
.
&
2
"
Haskell
7
8
,
&
J
? &
5
J
=
-
s
"
Haskell
1
u
4
"
W
g
0
1
u
;
S
B
'
-
.
-
&
/
)
M
k
g
,
(
\
,
9
8
_
/
9 M
V
_
.
G
#
e
"
}
8
,
&
3
{
/
Haskell
L [
,
<
!
.
1
u
8
G
?
=
A
(
b
C G
8 S h
G
$
.
;
G
8
(
3
B
M
V
,
;
^
* Q
z
k
P &
/
\
( "
t
)
"
=
L
J
V
M
V z
/ +
.