module Prelude.Function where id : ∀ {a} {A : Set a} → A → A id x = x infixl -10 id syntax id {A = A} x = x ofType A const : ∀ {a b} {A : Set a} {B : Set b} → A → B → A const x _ = x flip : ∀ {a b c} {A : Set a} {B : Set b} {C : A → B → Set c} → (∀ x y → C x y) → ∀ y x → C x y flip f x y = f y x infixl 9 _∘_ _∘_ : ∀ {a b c} {A : Set a} {B : A → Set b} {C : ∀ x → B x → Set c} (f : ∀ {x} (y : B x) → C x y) (g : ∀ x → B x) → ∀ x → C x (g x) (f ∘ g) x = f (g x) infixr 0 _$_ _$′_ case_of_ _$_ : ∀ {a b} {A : Set a} {B : A → Set b} → (∀ x → B x) → ∀ x → B x f $ x = f x _$′_ : ∀ {a b}{A : Set a} {B : Set b} → (A → B) → A → B f $′ x = f x case_of_ : ∀ {a b} {A : Set a} {B : Set b} → A → (A → B) → B case x of f = f x infixl 8 _on_ _on_ : ∀ {a b c} {A : Set a} {B : A → Set b} {C : ∀ x y → B x → B y → Set c} → (∀ {x y} (z : B x) (w : B y) → C x y z w) → (f : ∀ x → B x) → ∀ x y → C x y (f x) (f y) h on f = λ x y → h (f x) (f y) it : ∀ {a} {A : Set a} {{x : A}} → A it {{x}} = x