[plt-scheme] on-execute method in drscheme:language:language<%>

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Fri Jun 16 12:09:18 EDT 2006

You type check ONCE not every time you launch the program. Similarly, 
you prove things about the program ONCE, not every time you launch the 
program. However, while you are developing the program, launching (via 
RUN) and proving always coincides. Hence it is an issue to be solved 
within the program development environment not the compiler. -- 
Matthias


On Jun 16, 2006, at 11:57 AM, Eli Barzilay wrote:

> On Jun 16, Matthias Felleisen wrote:
>> I think that's precisely what you don't want.
>
> ??
>
>> This is an environmental issue not a programming issue. Suppose you
>> are creating an executable.  All you want for this thing is to run;
>> you don't want it to prove theorems, interactively, after you have
>> carefully proven this program correct.
>
> Sounds like it precisely what I *do* want!  To create an executable I
> have to compile the file in advance -- the compilation process expands
> macros, which forces me to prove the code correct.  The existence of
> the compiled code becomes the certificate that the relevant proofs
> were done.  Just like type-checking.
>
>
>> On Jun 16, 2006, at 11:49 AM, Eli Barzilay wrote:
>>
>>> On Jun 16, Dale Vaillancourt wrote:
>>>> I need to "type-check" a program before running.  If it doesn't
>>>> pass, I want to reject the attempt to run.  The checking is done by
>>>> submitting the text in the definitions window to an external theorem
>>>> prover.
>>>>
>>>> You are right about execute-callback not being quite what I want,
>>>> btw.  That captures all clicks on `Run', even when my language is
>>>> not the one associated with the current tab.
>>>
>>> Wouldn't that be better to do at syntax-expansion time?  Something
>>> like overriding #%module-begin for module code, and the evaluation
>>> handler for other toplevel interactions?  (And that will make it
>>> possible to use outside of DrScheme.)
>>>
>>> -- 
>>>           ((lambda (x) (x x)) (lambda (x) (x x)))          Eli
>>> Barzilay:
>>>                   http://www.barzilay.org/                 Maze is
>>> Life!
>>> _________________________________________________
>>>   For list-related administrative tasks:
>>>   http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>>
>
> -- 
>           ((lambda (x) (x x)) (lambda (x) (x x)))          Eli 
> Barzilay:
>                   http://www.barzilay.org/                 Maze is 
> Life!
> _________________________________________________
>   For list-related administrative tasks:
>   http://list.cs.brown.edu/mailman/listinfo/plt-scheme



Posted on the users mailing list.