diff --git a/lib/std/core/maybe.kk b/lib/std/core/maybe.kk index d5fc33284..0cd03ab54 100644 --- a/lib/std/core/maybe.kk +++ b/lib/std/core/maybe.kk @@ -42,6 +42,11 @@ pub fun map( m : maybe, f : a -> e b ) : e maybe Nothing -> Nothing Just(x) -> Just(f(x)) +pub fun flatmap( m : maybe, f : a -> e maybe ) : e maybe + match m + Nothing -> Nothing + Just(x) -> f(x) + pub fun (||)( m1 : maybe, m2: maybe ) : maybe match m1 Nothing -> m2 diff --git a/lib/std/core/maybe2.kk b/lib/std/core/maybe2.kk index 36417f67b..80bbf7a48 100644 --- a/lib/std/core/maybe2.kk +++ b/lib/std/core/maybe2.kk @@ -43,6 +43,11 @@ pub fun map( m : maybe2, f : (a,b) -> e (c,d) ) : e maybe2 Just2(x,y) -> match f(x,y) (fx,fy) -> Just2(fx,fy) +pub fun flatmap( m : maybe2, f : (a,b) -> e maybe2 ) : e maybe2 + match m + Nothing2 -> Nothing2 + Just2(x,y) -> f(x,y) + pub fun (||)( m1 : maybe2, m2: maybe2 ) : maybe2 match m1 Nothing2 -> m2