diff options
-rw-r--r-- | monad/optional.scm | 7 |
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)))))) |