# Function types ```agda module foundation-core.function-types where ``` <details><summary>Imports</summary> ```agda open import foundation.universe-levels ``` </details> ## Idea Functions are primitive in Agda. Here we construct some basic functions ## Examples ### The identity function ```agda id : {l : Level} {A : UU l} → A → A id a = a idω : {A : UUω} → A → A idω a = a ``` ### Dependent composition of functions ```agda infixr 15 _∘_ _∘_ : {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {C : (a : A) → B a → UU l3} → ({a : A} → (b : B a) → C a b) → (f : (a : A) → B a) → (a : A) → C a (f a) (g ∘ f) a = g (f a) ``` ### Evaluation at a point ```agda ev-point : {l1 l2 : Level} {A : UU l1} (a : A) {P : A → UU l2} → ((x : A) → P x) → P a ev-point a f = f a ev-point' : {l1 l2 : Level} {A : UU l1} (a : A) {X : UU l2} → (A → X) → X ev-point' a f = f a ``` ### Postcomposition functions ```agda map-Π : {l1 l2 l3 : Level} {I : UU l1} {A : I → UU l2} {B : I → UU l3} (f : (i : I) → A i → B i) → ((i : I) → A i) → ((i : I) → B i) map-Π f h i = f i (h i) map-Π' : {l1 l2 l3 l4 : Level} {I : UU l1} {A : I → UU l2} {B : I → UU l3} {J : UU l4} (α : J → I) → ((i : I) → A i → B i) → ((j : J) → A (α j)) → ((j : J) → B (α j)) map-Π' α f = map-Π (f ∘ α) map-implicit-Π : {l1 l2 l3 : Level} {I : UU l1} {A : I → UU l2} {B : I → UU l3} (f : (i : I) → A i → B i) → ({i : I} → A i) → ({i : I} → B i) map-implicit-Π f h {i} = map-Π f (λ i → h {i}) i ``` ## See also - [Postcomposition](foundation.postcomposition-functions.md) - [Precomposition](foundation.precomposition-functions.md) ### Table of files about function types, composition, and equivalences {{#include tables/composition.md}}