Tim,

I have also enjoyed the article, it's well written and easy enough to
follow (at least for me).

Slightly offtopic - I am curious about the use of forall in some type
signatures:

> subsume :: forall p q r. Prop (p :=> q) -> Prop ((p :/\ q) :== p)
> subsume pIMPq = equivInj (impInj pq2p) (impInj p2pq)
>   where pq2p :: Prop (p :/\ q) -> Prop p
>         pq2p assumePQ = andElimL assumePQ
>         p2pq :: Prop p -> Prop (p :/\ q)
>         p2pq assumeP = andInj assumeP q
>           where q = impElim assumeP pIMPq

There "r" type variable is mentioned, but it does not occur anywhere
else in the signature - what's the purpose of this construct?

Regards,
-- 
Krzysztof Kościuszkiewicz
Skype: dr.vee,  Gadu: 111851,  Jabber: [EMAIL PROTECTED]
Mobile IRL: +353851383329,  Mobile PL: +48783303040
"Simplicity is the ultimate sophistication" -- Leonardo da Vinci
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to