{-# OPTIONS --cubical --no-import-sorts --safe #-}
module Cubical.Data.Maybe.Base where

open import Cubical.Core.Everything

private
  variable
     : Level
    A B : Type 

data Maybe (A : Type ) : Type  where
  nothing : Maybe A
  just    : A  Maybe A

caseMaybe : (n j : B)  Maybe A  B
caseMaybe n _ nothing  = n
caseMaybe _ j (just _) = j

map-Maybe : (A  B)  Maybe A  Maybe B
map-Maybe _ nothing  = nothing
map-Maybe f (just x) = just (f x)

rec : B  (A  B)  Maybe A  B
rec n j nothing = n
rec n j (just a) = j a