{-# 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