12345678910111213141516171819202122232425262728 |
- module FunctorComposition where
- open import Functor as F
- compose : {F₁ F₂ : Setoid → Setoid} →
- Functor F₁ → Functor F₂ → Functor (λ A → F₁ (F₂ A))
- compose {F₁} {F₂} FF₁ FF₂ = record
- { map = map FF₁ ∘ map FF₂
- ; identity = λ {A} →
- trans (F₁ (F₂ A) ⇨ F₁ (F₂ A))
- {i = map FF₁ ⟨$⟩ (map FF₂ ⟨$⟩ id)}
- {j = map FF₁ ⟨$⟩ id}
- {k = id}
- (cong (map FF₁) (identity FF₂))
- (identity FF₁)
- ; composition = λ {A B C} f g →
- trans (F₁ (F₂ A) ⇨ F₁ (F₂ C))
- {i = map FF₁ ⟨$⟩ (map FF₂ ⟨$⟩ (f ∘ g))}
- {j = map FF₁ ⟨$⟩ ((map FF₂ ⟨$⟩ f) ∘ (map FF₂ ⟨$⟩ g))}
- {k = (map FF₁ ⟨$⟩ (map FF₂ ⟨$⟩ f)) ∘
- (map FF₁ ⟨$⟩ (map FF₂ ⟨$⟩ g))}
- (cong (map FF₁) (composition FF₂ f g))
- (composition FF₁ (map FF₂ ⟨$⟩ f) (map FF₂ ⟨$⟩ g))
- }
- where
- open Setoid
- open F.Functor
|