{-# OPTIONS --without-K #-} module FunUniverse.Types where open import Type hiding (★) open import Data.Nat.NP using (ℕ) open import Level.NP open import Function open import FunUniverse.Data record FunUniverse {t} (T : ★ t) : ★ (ₛ t) where constructor _,_ field universe : Universe T _`→_ : T → T → ★₀ infix 0 _`→_ open Universe universe public `𝟙→_ : T → ★₀ `𝟙→ A = `𝟙 `→ A `𝟚→_ : T → ★₀ `𝟚→ A = `𝟚 `→ A _`→𝟙 : T → ★₀ A `→𝟙 = A `→ `𝟙 _`→𝟚 : T → ★₀ A `→𝟚 = A `→ `𝟚 _`→ᵇ_ : ℕ → ℕ → ★₀ i `→ᵇ o = `Bits i `→ `Bits o `Endo : T → ★₀ `Endo A = A `→ A module OpFunU {t} {T : Set t} (funU : FunUniverse T) where open FunUniverse funU opFunU : FunUniverse T opFunU = universe , flip _`→_