[Haskell-cafe] Trapped by the Monads
Bill Wood
william.wood3 at comcast.net
Tue Sep 20 14:51:26 EDT 2005
. . .
> What struck me was this bit of code:
>
> assemblyLine w = (return w) >>= makeChopsticks >>= polishChopsticks >>= wrapChopsticks
>
>
> Interestingly, this looks like Forth (!), where you put a value on the
> stack, and successive operations fiddle with the stack as a series of
> transformations. Not that I know Forth, you understand. Hmm, so Haskell
> can be a concatenative language if you want it to be.
Some time ago I had occasion to model a special-purpose machine in SML,
and the potential users wanted a programmatic interface that looked like
an assembly language for the machine. I modeled the instructions as
curried functions with the machine state as the last parameter and
return value, and defined a "reverse compose" function -- (f >> g) x ===
g (f x). This allowed me to write programs with op codes and parameters
running down the page, just like real assembler (I tabbed over to place
the ">>" so they kinda hung out in the comment area so as not to spoil
the illusion). It was a quick 'n dirty hack that turned out to be
pretty slick.
-- Bill Wood
bill.wood at acm.org
More information about the Haskell-Cafe
mailing list