
On Sun, Feb 10, 2013 at 09:28:12PM +0100, Petr Pudlák wrote:
2013/2/9 Conal Elliott
wrote: What I have in mind is a small collection of methods including fst & snd (and similarly for sums) that could be defined via arr but could instead form the basis of translating restricted arrow notation for (pseudo-)arrows that don't support arr.
I also support this idea, I'd appreciate such a generalization.
As an example, where it would be useful: One of my students was working on a (very nice) project where he used Haskell as a DSL for generating a FRP-like javascript code. The arrow notation without "arr" would be ideal for this situation. He couldn't implement "arr" as it would require to translate an arbitrary Haskell function to JS. So having a more general variant of "Arrow" without "arr" and with a collection of methods sufficient for the arrow notation would be quite helpful. (I wonder what methods would have to be included in the collection.)
Let's try to break this down. Suppose we split arr :: forall b c. (b -> c) -> a b c into two primitives (^>>) :: forall b c d. (b -> c) -> a c d -> a b d id :: forall b. a b b The contravariant functor (^>>) is essential to arrow notation, but I suspect the issue is the universally quantified b in the type of id (or equivalently returnA). One might instead use a variant of id constrained to an ADT with just the operations you want.