From 3c96e1e1819d3fe68d5986cc8cb268e7698e0ab9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Fri, 16 Nov 2018 00:53:15 +0100 Subject: Add instance of fmap for . --- data/optional.scm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/data/optional.scm b/data/optional.scm index b008471..c90fec5 100644 --- a/data/optional.scm +++ b/data/optional.scm @@ -2,11 +2,11 @@ #:use-module (oop goops) #:use-module (ice-9 match) #:use-module (control monad) + #:use-module (data functor) #:export (nothing just nothing? just? return-optional) - ;; TODO is this reexport needed? - #:re-export (>>=)) + #:re-export (>>= >> fmap)) (define-class () (slot #:init-value #f @@ -47,3 +47,8 @@ (nothing? b)) (nothing) b)) + +(define-method (fmap (f ) + (m )) + (do x <- m + (return-optional (f x)))) -- cgit v1.2.3