aboutsummaryrefslogtreecommitdiff
path: root/monad/optional.scm
diff options
context:
space:
mode:
Diffstat (limited to 'monad/optional.scm')
-rw-r--r--monad/optional.scm7
1 files changed, 7 insertions, 0 deletions
diff --git a/monad/optional.scm b/monad/optional.scm
index 1aa1e92..015fc90 100644
--- a/monad/optional.scm
+++ b/monad/optional.scm
@@ -51,3 +51,10 @@ the value embedded in maybe-val"
(($ <optional> slot) (proc slot))))))
(define-method (return (a <optional>)) just)
+
+(define-method (equal? (a <optional>)
+ (b <optional>))
+ (or (and (nothing? a) (nothing? b))
+ (from-just #f (do aa <- a
+ bb <- b
+ (just (equal? aa bb))))))