diff delta.hs @ 69:295e8ed39c0c

Change headDelta definition. return non-delta value
author Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
date Thu, 27 Nov 2014 19:12:44 +0900
parents 46b15f368905
children 0ad0ae7a3cbe
line wrap: on
line diff
--- a/delta.hs	Thu Nov 27 14:46:39 2014 +0900
+++ b/delta.hs	Thu Nov 27 19:12:44 2014 +0900
@@ -11,9 +11,9 @@
 deltaAppend (Mono x) d     = Delta x d
 deltaAppend (Delta x d) ds = Delta x (deltaAppend d ds)
 
-headDelta :: Delta a -> Delta a
-headDelta d@(Mono  _) = d
-headDelta (Delta x _) = Mono x
+headDelta :: Delta a -> a
+headDelta (Mono  x)   = x
+headDelta (Delta x _) = x
 
 tailDelta :: Delta a -> Delta a
 tailDelta d@(Mono _)   = d
@@ -34,7 +34,7 @@
 
 bind :: (Delta a) -> (a -> Delta b) -> (Delta b)
 bind (Mono x)    f = f x
-bind (Delta x d) f = (headDelta (f x)) `deltaAppend` (bind d (tailDelta . f))
+bind (Delta x d) f = Delta (headDelta (f x)) (bind d (tailDelta . f))
 
 mu :: (Delta (Delta a)) -> (Delta a)
 mu d = bind d id