
. . .
Another thing I noticed in my nano-experience of Haskell is the Maybe monad. This is interesting because it's a bit like a hybrid variables. If you look at a book like "Writing Solid Code" (or is it "Code Complete", I can't remember now) which examine C style, they basically scorn the use of hybrid variables. However, I read in something like "Thinking Forth" (or maybe it was just a comment I saw atrributed to Charles Moore, the inventor of Forth), who actually advocated hybrid variables.
Could you briefly elaborate on what you mean by "hybrid variables"?
It would be interesting to see how far the notion of "Haskell as Forth" can go. Can Haskell make a better Forth than Forth can, or does it miss some things which are quite natural in Forth.
I've always thought that there was a pretty natural correspondence between Forth and FLs (functional languages); words that pop args from the stack, compute, and push the results correspond to "pure" code, and words that do IO, fetch and assign variables, etc. correspond to the imperative code. The facts that 1) the innards of the Forth machine are exposed to the programmer and 2) that everything in Forth is a word make seamless language extension easy; I don't think the same can be said for FLs. On the other hand, recursion is difficult in Forth, and interpretation-as-you-read make higher-order functions difficult (I never saw any serious attempts at HOFs). I suspect it's a levels-of-abstraction thing; after all, the Forth environment could be viewed as the ideal stack machine upon which to implement FLs and block-structured languages. -- Bill Wood bill.wood@acm.org