Dear Dave, Thanks for the nice propaganda!
A few comments regarding the points you made in your message. Ineffeciency of fibo-like programs: Your observations are true. But this is a comonadic interpreter analogous to the cbv monadic interpreter. One can also define an analogue to the cbn monadic interpreter. This is better than the "cbv" version on the n first Fibonacci numbers but worse on the nth number alone... Zippers: Yes, of course! Streams are an infinite linear datastructure, but you can also do trees (eg decorated parse trees of a CFG). Such trees with a distinguished position are of course the zipper datatype and this is a comonad as well. And similarly to the comonadic approach to the semantics of dataflow languages one can give a comonadic structure eg to attribute grammar specifications (either purely synthesized attribute grammars or general attribute grammars). We've developed these ideas in a paper that was presented at TFP, see http://www.cs.ioc.ee/~tarmo/papers/tfp05.pdf (this is the symposium version, the full version is in preparation.) To present the comonadic semantics of attribute grammar specifications neatly, one needs either GADTs or dependent types. Best wishes, Tarmo U _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell