Mercurial > hg > Members > atton > delta_monad
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