At 2002-05-24 13:40, Wolfgang Jeltsch wrote:
Now, I have a type which would fit wonderfully into the Arrow concept if arrows wouldn't be expected to have a first operator.
...then it's not an Arrow. It sounds like it might be one of these, however: class Compositor comp where { identity :: comp a a; compose :: comp b c -> comp a b -> comp a c; }; I'm not sure if 'Compositor' is a good name for it, or what.
Parser arrow. And there is also a meaningful definition for pure (arr). pure f just has to be a parser which reads exactly one token, applies f to it and outputs the resulting value. The problem is that there seems to be no appropriate definition for first. That's why, in my opinion, it would be very good to have only the
Can't you have a parser that reads in one token tuple, and apply another parser to the first part of it only? Otherwise, perhaps you could have classes like this: class (Compositor arrow) => Semiarrow arrow where { arr :: (p -> q) -> arrow p q; }; class (Semiarrow arrow) => Arrow arrow where { arrFirst :: arrow p q -> arrow (p,r) (q,r); }; -- Ashley Yakeley, Seattle WA