[gambit-list] Operator is not a PROCEDURE, unbound

Matt Hastie matthastie at gmail.com
Sat Sep 21 01:32:48 EDT 2013


Team,

Examination of this problem leads me to believe the cause might be result of interference in the -:s parameter on the gsc command line.

When standard mode is not specified, the example executes without the failure:

bash-3.2$ gsc -o change-directory -exe change-directory.scm ../src/gambit/lib/syntax-case.scm 
change-directory.scm:
/Volumes/Data/scratch/scheme/control/home/change-directory.c:
../src/gambit/lib/syntax-case.scm:
/Volumes/Data/scratch/scheme/control/src/gambit/lib/syntax-case.c:
/Volumes/Data/scratch/scheme/control/src/gambit/lib/syntax-case_.c:
bash-3.2$ ./change-directory ..
bash-3.2$ 

I went forth and tested the other forms of command-line compilation documented in the manual. All scenarios are successful where -:s is not provided on the command line.

bash-3.2$ gsc -:s -o change-directory -exe change-directory.scm
*** WARNING -- "$sc-put-cte" is not defined,
***            referenced in: ("/Volumes/Data/scratch/scheme/control/home/change-directory.c")
bash-3.2$ gsc -:s  -o change-directory -exe change-directory.scm ../src/gambit/lib/syntax-case.scm 
change-directory.scm:
/Volumes/Data/scratch/scheme/control/home/change-directory.c:
../src/gambit/lib/syntax-case.scm:
/Volumes/Data/scratch/scheme/control/src/gambit/lib/syntax-case.c:
/Volumes/Data/scratch/scheme/control/src/gambit/lib/syntax-case_.c:
bash-3.2$ ./change-directory ..
*** ERROR IN | change-directory| -- Operator is not a PROCEDURE
(#!unbound2
 '#(syntax-object change-directory ((top) #(ribcage #(change-directory) #((t...
 '(global . change-directory)
 '*top*)
bash-3.2$ gsc -o change-directory -exe change-directory.scm ../src/gambit/lib/syntax-case.scm 
change-directory.scm:
/Volumes/Data/scratch/scheme/control/home/change-directory.c:
../src/gambit/lib/syntax-case.scm:
/Volumes/Data/scratch/scheme/control/src/gambit/lib/syntax-case.c:
/Volumes/Data/scratch/scheme/control/src/gambit/lib/syntax-case_.c:
bash-3.2$ ./change-directory ..
bash-3.2$ 
bash-3.2$ gsc -c change-directory.scm
bash-3.2$ gsc -c ../lib/syntax-case.scm 
bash-3.2$ gsc -o change-directory-2 -exe change-directory.c ../lib/syntax-case.c 
bash-3.2$ ./change-directory-2 ..
bash-3.2$ 
bash-3.2$ gsc -link change-directory ../lib/syntax-case
change-directory:
../lib/syntax-case:
bash-3.2$ gsc -obj change-directory.c ../lib/syntax-case.c ../lib/syntax-case_.c 
change-directory.c:
../lib/syntax-case.c:
../lib/syntax-case_.c:
bash-3.2$ 
bash-3.2$ gcc -o change-directory-3 change-directory.o ../lib/syntax-case.o ../lib/syntax-case_.o -L../lib -lgambc
bash-3.2$ ./change-directory-3 ..
bash-3.2$ 
bash-3.2$ gsc -obj change-directory.c
bash-3.2$ gsc -obj ../lib/syntax-case.c 
bash-3.2$ gsc -obj ../lib/syntax-case_.c 
bash-3.2$ gcc -o change-directory-3 change-directory.o ../lib/syntax-case.o ../lib/syntax-case_.o -L../lib -lgambc
bash-3.2$ ./change-directory-3 ..
bash-3.2$  

I'm going to look further into this issue to determine the exact cause, with intent to submit an additional patch that productizes this work such that compilation with standard mode works as it did formerly, i.e.:

- with use of -:s
- without explicit specification of syntax-case.scm as an input.

In the meantime, it may make sense to remove this patch from the git head until a critical mass of win is ascertained. I'm pretty excited by the prospect of compiled macros & modules from syntax-case in my favorite scheme compiler, I thus hope to return shortly with a complete solution that eliminates these warts.

Kind regards,
Matt.

On Sep 20, 2013, at 3:39 PM, Matt Hastie <matthastie at gmail.com> wrote:

> Marc,
> 
> I think the situation appears more urgent than you suggest. The change appears to have broken executable compilation.
> 
> I was able to reproduce this problem trivially with the suggested code:
> 
> ;; change-directory.scm
> (define (change-directory path)
> (current-directory path))
> (change-directory (cadr (command-line)))
> 
> 
> bash-3.2$ gsc -:s -exe change-directory.scm ../lib/syntax-case.scm
> change-directory.scm:
> /Volumes/Data/scratch/scheme/control/home/change-directory.c:
> ../lib/syntax-case.scm:
> /Volumes/Data/scratch/scheme/control/lib/syntax-case.c:
> /Volumes/Data/scratch/scheme/control/lib/syntax-case_.c:
> bash-3.2$ ./change-directory ..
> *** ERROR IN | change-directory| -- Operator is not a PROCEDURE
> (#!unbound
> '#(syntax-object change-directory ((top) #(ribcage #(change-directory) #((t...
> '(global . change-directory)
> '*top*)
> bash-3.2$ 
> 
> I'll go back and study the psyntax code around this defect for a resolution that supports both the command line compilation and gsc repl envrionments.
> 
> Sven - my sincere apologies for this fail.
> 
> Matt.
> 
> On Sep 20, 2013, at 7:28 AM, Marc Feeley <feeley at iro.umontreal.ca> wrote:
> 
>> With the latest changes to syntax-case, it is now required to load syntax-case.scm (or use the -:s runtime option) when loading files which were compiled with the -:s option.
>> 
>> Marc
>> 
>> On 2013-09-20, at 7:56 AM, Sven Hartrumpf <hartrumpf at gmx.net> wrote:
>> 
>>> Hi.
>>> 
>>> I have a large program that runs fine in the interpreter.
>>> But when compiled with these options (latest gambit from git)
>>> (declare
>>> (r5rs-scheme)
>>> (constant-fold)
>>> (inline)
>>> (inlining-limit 500)
>>> (standard-bindings)
>>> (extended-bindings)
>>> (safe)
>>> (mostly-generic))
>>> the compiled program crashes as follows:
>>> 
>>> *** ERROR IN | n| -- Operator is not a PROCEDURE
>>> (#!unbound '#(syntax-object change-directory ((top) #(ribcage #(change-directory) #((top)) #(change-directory)))) '(global . change-directory) '*top*)
>>> 
>>> change-directory is from a simple Scheme portability layer:
>>> 
>>> (define (change-directory path)
>>> (current-directory path))
>>> 
>>> Sven
>>> _______________________________________________
>>> Gambit-list mailing list
>>> Gambit-list at iro.umontreal.ca
>>> https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
>> 
>> _______________________________________________
>> Gambit-list mailing list
>> Gambit-list at iro.umontreal.ca
>> https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
> 




More information about the Gambit-list mailing list