Slide 15
Slide 15 text
異種のモナドが混在する場合
(1)
パター
ンマッチ
i
m
p
o
r
t s
c
a
l
a
z
.
_
, S
c
a
l
a
z
.
_
c
a
s
e c
l
a
s
s U
s
e
r
(
i
d
: I
n
t
,
f
i
r
s
t
N
a
m
e
: O
p
t
i
o
n
[
S
t
r
i
n
g
]
,
l
a
s
t
N
a
m
e
: O
p
t
i
o
n
[
S
t
r
i
n
g
]
)
d
e
f u
s
e
r
R
o
l
e
(
i
d
: I
n
t
)
: E
r
r
o
r \
/ R
o
l
e = ?
?
?
d
e
f u
s
e
r
I
n
f
o
(
u
s
e
r
: U
s
e
r
)
: E
r
r
o
r \
/ O
p
t
i
o
n
[
S
t
r
i
n
g
] =
u
s
e
r
R
o
l
e
(
u
s
e
r
.
i
d
) m
a
t
c
h {
c
a
s
e \
/
-
(
r
o
l
e
) =
> u
s
e
r m
a
t
c
h {
c
a
s
e U
s
e
r
(
_
, S
o
m
e
(
f
i
r
s
t
)
, S
o
m
e
(
l
a
s
t
)
) =
>
\
/
-
(
S
o
m
e
(
s
"
$
f
i
r
s
t $
l
a
s
t
: $
r
o
l
e
"
)
)
c
a
s
e _ =
>
\
/
-
(
N
o
n
e
)
}
c
a
s
e -
\
/
(
e
r
r
o
r
) =
> -
\
/
(
e
r
r
o
r
)
}