On Jan 6, 2009, at 6:36 PM, Grant Rettke wrote:
> On Tue, Jan 6, 2009 at 5:18 PM, John Clements <clements at brinckerhoff.org> > wrote:
>> Yes, that's gross. On the other hand, I find that when writing
>> Scheme these
>> days, using mutation gives me the willies; it seems less error-
>> prone to use
>> a state monad, where I don't have to worry about other bits of the
>> computation coming in and messing up the state.
>> Please elaborate on how you use the state monad in Scheme.
Here's one example; for a compilers class that I'm teaching, I've
written a toy compiler. The standard way of translating expression
trees into linear code causes a problem, though; you want to know, for
instance, what the last basic block was labeled. One natural way to
do this is to mutate a variable that stores the label of the most
recent basic block. (There are certainly other ways to do this.) When
trying this style, though, I felt more comfortable using a state monad
to hook things up, rather than using actual mutation.
... or were you just asking how to write code in scheme that uses the
state monad?
John Clements
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2484 bytes
Desc: not available
URL: <http://lists.racket-lang.org/users/archive/attachments/20090106/88567bf7/attachment.p7s>