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