[Larceny-users] uncatchable syntax violation

Felix Klock felixluser at pnkfx.org
Thu Nov 5 11:10:53 EST 2009


On Nov 5, 2009, at 10:55 AM, William D Clinger wrote:

> Marco Maggi wrote:
>> is this correct?
>
> I'm not sure whether the R6RS allows Larceny's behavior.
> In any case, I regard Larceny's behavior as undesirable,
> and have logged it as a defect to be fixed:
> https://trac.ccs.neu.edu/trac/larceny/ticket/658
>
> Thank you for reporting this.

Just a note: Larceny is spitting out a lot of extra text to the  
console about the syntax violation, (which I do regard as undesirable  
and probably a bug), but saying that Larceny "aborts the process" is  
misleading (at least to someone like me, who interprets it to mean  
that the operating system process terminates prematurely).

Consider the following:

   (import (rnrs) (rnrs eval))

   (guard (E ((syntax-violation? E) (display #t) (newline))
             (else (write E)))
     (eval '(let ())
           (environment '(rnrs))))

   (display "Process was not aborted")
   (newline)

When I run this program, I get the following output:

   Syntax violation: let

   Invalid form

   Form: (let ())

   Trace:

     (let ())

   #t
   Process was not aborted


So, on my system (Larceny 0.97), the computation is proceeding to run  
the other expressions after the guard.

Marco: is this consistent with your experience?  Or are you actually  
seeing the operating system process terminate before the end of the  
program has been reached?

-Felix





More information about the Larceny-users mailing list