{-# OPTIONS --safe --without-K #-} module Canon.Maybe where open import Data.Product open import Data.Vec open import Data.Maybe using (Maybe) open import Core open import Signature open import Canon open import Level as L module MaybeCanon where data TMaybeShape : Set where maybe : TMaybeShape TMaybeΣ = TMaybeShape ▹ λ where pair → 1 maybe′ : ⦃ TMaybeΣ ≼ σ ⦄ → (t : μ σ) → μ σ maybe′ t = inject (maybe , (lift (t ∷ []))) open Algebra MaybeVal : Algebra TMaybeΣ Set Set alg MaybeVal (maybe , lift (Vt ∷ [])) = Maybe Vt maybeCanon : Canon Canon.ty maybeCanon = TMaybeΣ Canon.val maybeCanon = MaybeVal open MaybeCanon public