module Function where open import Level ---------------------------------------------------------------------- -- Identity function ---------------------------------------------------------------------- id : {ℓ : Level} {A : Set ℓ} → --------- A → A id x = x ---------------------------------------------------------------------- -- Composition ---------------------------------------------------------------------- infixr 5 _∘_ _∘₂_ _∘_ : {ℓ m n : Level} {A : Set ℓ} {B : A → Set m} {C : (x : A) → B x → Set n} (g : {x : A}(y : B x) → C x y) (f : (x : A) → B x) → ---------------------------- (x : A) → C x (f x) (g ∘ f) x = g (f x) _∘₂_ : {k ℓ m n : Level} {A : Set k} {B : Set ℓ} {C : Set m} {D : Set n} (g : C → D) (f : A → B → C) → ------------- A → B → D (g ∘₂ f) x y = g (f x y) ---------------------------------------------------------------------- -- Constant function ---------------------------------------------------------------------- K : {ℓ m : Level} {A : Set ℓ} {B : Set m} → ----------- B → (A → B) K y _ = y ---------------------------------------------------------------------- -- Function application ---------------------------------------------------------------------- apply : {ℓ m : Level} {A : Set ℓ} {B : A → Set m} (x : A) → --------------------- ((x' : A) → B x') → B x apply x f = f x