On Sat, Aug 11, 2007 at 03:00:04PM -0400, Ronald Guida wrote:
> The question remains: "What is special about Monad or ArrowApply,
> compared to Arrow?" or "What is more general about Arrow, compared to
> Monad or ArrowApply?"

If all you have is an Arrow, then you must make up your mind what you're
going to do ahead of time.

ArrowChoice gives you the ability to make basic "yes or no" decisions at
run time.

ArrowApply gives you arbitrary computed jumps.


Sometimes it's useful to restrict what you can do.  Duponcheel and
Swierstra wrote a parser library as an Arrow; because it forced you to
decide the parsing structure ahead of time, their library had enough
information to build LR-type parsing tables, and thus to do yacc-style
error correction.  (Nobody found it useful enough to use, but it still
makes a nice demonstration of why plain Arrow is sometimes better.)

Conversely, some applications *need* the extra freedom.  Imagine trying
to write an interpreter for a toy language with I/O, and IO is a plain
Arrow and not a Monad.  You can read input and parse it, but you can't
actually do IO because the IO you need to do, depends on the input you
read - precisely what Arrow forbids!

Stefan

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to