Source code on Github
{-# OPTIONS --cubical-compatible #-}
module Class.Default.Instances where

open import Class.Prelude
open import Class.Default.Core

instance
  Default-⊤ = Default ⊤    ∋ λ where .def → tt
  Default-𝔹 = Default Bool ∋ λ where .def → true
  Default-ℕ = Default ℕ    ∋ λ where .def → zero
  Default-ℤ = Default ℤ    ∋ λ where .def → ℤ.pos def

  Default-Maybe : Default (Maybe A)
  Default-Maybe .def = nothing

  Default-List : Default (List A)
  Default-List .def = []

  Default-Fin : Default (Fin (suc n))
  Default-Fin .def = Fin.zero

  Default-→ : ⦃ Default B ⦄ → Default (A → B)
  Default-→ .def = const def

  module _ ⦃ _ : Default A ⦄ ⦃ _ : Default B ⦄ where
    Default-× = Default (A × B) ∋ λ where .def → def , def
    Default-⊎ = Default (A ⊎ B) ∋ λ where .def → inj₁ def