[Agda] Importing Infix Operation Inside a Record From Record Field (Indentation fixed)

Vag Vagoff vag.vagoff at gmail.com
Tue Oct 27 20:30:34 CET 2009


module Bug where
id : ∀ {A} → A → A ; id a = a
infix 8 _≡_ ; data _≡_ {A : Set} (a : A) : A → Set where ≡-refl : a ≡ a
infixr 90 _◦_ ; _◦_ : ∀ {A B C : Set} → (B → C) → (A → B) → (A → C) ; f 
◦ g = λ x → f (g x)

record Applicative (t : Set → Set) : Set₁ where
     infixl 40 _⊛_
     field
         pure : ∀ {a} → a → t a
         _⊛_ : ∀ {a b} → t (a → b) → t a → t b

record IsApplicative (t : Set → Set) : Set₁ where
     field
         applicative : Applicative t
     pure : ∀ {a} → a → t a
     pure = Applicative.pure applicative
     infixl 40 _⊛_
     _⊛_ : ∀ {a b} → t (a → b) → t a → t b
     _⊛_ = Applicative._⊛_ applicative
     field
         identity : ∀ {a} {u : t a} → pure id ⊛ u ≡ u
------------------VVVVVVVVVVVVVVVV---------------
         composition : ∀ {a b c} {u : t (b → a)} {v : t (c → b)} {w : t 
c} → ((pure _◦_ ⊛ u) ⊛ v) ⊛ w ≡ u ⊛ (v ⊛ w) -- [!] associativity does 
not works! i.e. unable to open parenthesis: pure _◦_ ⊛ u ⊛ v ⊛ w ≡ u ⊛ 
(v ⊛ w)
------------------^^^^^^^^^^^^^^^^^^^^^^^^^-------------------
         homomorphism : ∀ {a b} {x : a} {f : a → b} → pure f ⊛ pure x ≡ 
pure (f x)
         interchange : ∀ {a b} {x : a} {u : t (a → b)} → u ⊛ pure x ≡ 
pure (λ f → f x) ⊛ u


Why associativity does not work for ⊛ in `composition' field? How to fix 
this record to do its job and leave readability high?




More information about the Agda mailing list