
ok, so one example of this design, albeit implemented in a funky way
(compiler passes written in coq), was
Adam Megacz's Garrows project http://www.megacz.com/berkeley/garrows/
a more concrete example of a haskell lib that enjoys a deep embedding and
doesn't let you inject arbitrary (f:: a-> b )
would be Accelerate hackage.haskell.org/package/accelerate (the expression
language there could be made into an "*arr* free Arrow" but not an Arrow
that has *arr*)
basically not having *arr* or the monadic equiv *bind*, gives you a way to
write libs where you can get a program as a first order AST when you "run
it" and be able to analyze/compile it in user land at runtime
On Tue, Jun 17, 2014 at 4:37 PM, Jan Stolarek
assuming that any haskell function can be embedded in an arrow instance (...) prevents a lot of interesting deep embedding uses of the Arrow abstraction Could you point me to some specific examples? I'm new to arrows and definitely far from groking all the arcana of their usage.
Janek