{-# OPTIONS --cubical --safe #-}
module Data.Maybe.Sugar where
open import Prelude
open import Data.Maybe
infixl 4 _<*>_
_>>=_ : Maybe A → (A → Maybe B) → Maybe B
nothing >>= f = nothing
just x >>= f = f x
pure : A → Maybe A
pure = just
_<*>_ : Maybe (A → B) →
Maybe A →
Maybe B
nothing <*> xs = nothing
just f <*> nothing = nothing
just f <*> just x = just (f x)
_>>_ : Maybe A → Maybe B → Maybe B
nothing >> _ = nothing
just _ >> y = y
guard : Bool → Maybe ⊤
guard false = nothing
guard true = just tt
_<|>_ : Maybe A → Maybe A → Maybe A
nothing <|> ys = ys
xs@(just _) <|> _ = xs