open import Agda.Primitive using (Level)
open import Agda.Builtin.Nat using (Nat)
data Maybe {a} (A : Set a) : Set a where
Nothing : Maybe A
Just : A → Maybe A
private variable a : Level; A : Set a
idMaybe : Maybe A → Maybe A
idMaybe x = x
m0 m1 : Maybe Nat
m0 = Nothing
m1 = Just 6
fromMaybeNat : Maybe Nat → Nat
fromMaybeNat Nothing = 6
fromMaybeNat (Just n) = n
fromMaybe : ∀ {a}{A : Set a} → A → Maybe A → A
fromMaybe def Nothing = def
fromMaybe _ (Just x) = x
open import Agda.Builtin.Nat
toNat = fromMaybe 0
test : Nat
test = toNat (idMaybe(Just 6)) + toNat (idMaybe m1)
+ fromMaybeNat Nothing + fromMaybeNat m0 + fromMaybeNat m1
+ fromMaybe 6 m0 + fromMaybe 0 m1
{-# COMPILE AGDA2LAMBOX test #-}
Debug λ☐ Rocq ↪
WASM C OCaml CakeML Rust Elm