annotate prepaper/src/delta_instance_monad.hs @ 63:c75ba6313e39

Writing prepaper...
author Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
date Tue, 17 Feb 2015 12:08:10 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
63
c75ba6313e39 Writing prepaper...
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 headDelta :: Delta a -> a
c75ba6313e39 Writing prepaper...
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 headDelta (Mono x) = x
c75ba6313e39 Writing prepaper...
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 headDelta (Delta x _) = x
c75ba6313e39 Writing prepaper...
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
c75ba6313e39 Writing prepaper...
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 tailDelta :: Delta a -> Delta a
c75ba6313e39 Writing prepaper...
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 tailDelta (Mono x) = Mono x
c75ba6313e39 Writing prepaper...
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 tailDelta (Delta _ ds) = ds
c75ba6313e39 Writing prepaper...
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
c75ba6313e39 Writing prepaper...
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 instance Monad Delta where
c75ba6313e39 Writing prepaper...
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 return x = Mono x
c75ba6313e39 Writing prepaper...
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 (Mono x) >>= f = f x
c75ba6313e39 Writing prepaper...
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 (Delta x d) >>= f = Delta (headDelta (f x))
c75ba6313e39 Writing prepaper...
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 (d >>= (tailDelta . f))