On Thu, Jan 6, 2011 at 3:20 PM, Casey Klein <clkl...@eecs.northwestern.edu> wrote: > > Still I am not certain that this behavior of 'raise' cannot be implemented > > by other (delimited) control operators. And, probably I do not still > > understand why 'raise' has to be a primitive. > > It can be implemented in terms of continuation marks (if you know the > key for exception handlers).
You are probably saying 'raise' is different from 'abort' as 'raise' installs a barrier, which renders it to be a primitive. This should answer my question, I think. > > Something along this: > > > > (with-handlers ([(lambda (_) true) (lambda (x) ((car x) (cdr x)))]) > > (prompt (+ (control f (raise (cons f 3))) 1))) > > > > will not work? > > > > Now I'm not sure I understand what you're trying to do. I thought the > goal was to simulate `raise' using `abort', but this program uses > `raise' directly. I was trying to mimic the behavior of 'call-with-exception-handler' via 'with-handler'. But please ignore this. Thanks, Keiko _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users