[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

DYNAMIC-WIND vs. multi-processing



   Date: Wed, 12 May 93 15:20:05 HKT
   From: shivers@csd.hku.hk

   That's because CALL/CC doesn't distinguish these things. It's too damn
   powerful. I do not like CALL/CC. It messes up my foundations for reasoning
   about programs. And if it interferes with human reasoning, that goes
   double for compiler analysis.

In Steel's 1978 Thesis on the Rabbit (optimizing) compiler, he uses
continuation-passing-style lambda as the compiler's intermediate form.
Although call-with-current-continuation was not part of Scheme at that
time it clearly would have been trivially handled by the compiler.  So
I don't think any problems your compiler is having with CWCC are
universal.

       I think we will lose a lot of succinctness in the
       language if we start distinguishing these.

   Jeez. The language doesn't even have a standardised record data structure,
   exception mechanism, or a really finished macro system.  Doesn't have a module
   system of any kind, barring for the under-construction one Jonathan has in
   S48. And we are worrying about concurrency primitives? Modula-3 is so far out
   in front of Scheme as a real systems language it's staggering.

   Scheme is the world's most powerful toy language.

How embarrassing for me!  Nobody told me this so I went ahead and
programmed major systems (like b-trees, query optimization, symbolic
algebra, and a free text database) in a slightly augmented Scheme.

By the way, my b-tree system is designed to work in a multi-processor
shared memory system.  All errors are explicitly handled by the code;
It does not use any condition handlers or dynamic binding so it avoids
the problem we are discussing.  The only construct I had to add for
multi-processing was locks.