diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/prepaper/src/delta_instance_monad.hs	Tue Feb 17 12:08:10 2015 +0900
@@ -0,0 +1,13 @@
+headDelta :: Delta a -> a
+headDelta (Mono  x)   = x
+headDelta (Delta x _) = x
+
+tailDelta :: Delta a -> Delta a
+tailDelta (Mono x)     = Mono x
+tailDelta (Delta _ ds) = ds
+
+instance Monad Delta where
+ return x = Mono x
+ (Mono x) >>= f    = f x
+ (Delta x d) >>= f = Delta (headDelta (f x))
+                       (d >>= (tailDelta . f))