This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Wrong type argument in position 1: %S



> guile> (add-obs  (obs (color 0.5 1.0 0.0)
> ...                 '(-5 -5) '( 1 -3) '( 2 -1) '(-4 2) 1 "ObsTest" 0.0))
> ERROR: In procedure apply in expression (add-obs (obs # # ...)):
> ERROR: Wrong type argument in position 1: %S
> ABORT: (wrong-type-arg)
> 
> I'm not even sure what it means.  My guess is that the record is not
> immediate and non-immediates are no longer allowed as C args.
> Is this the case?  Or can you still pass anything into C?
> What's the right way to do this type of thing?
> Are there any quick and nasty hacks around it (-DRECKLESS ??) ?

No, you can still pass anything you like between C and Guile.  It'd be
kind of pointless otherwise.  The problem is most likely that the
value SCM_UNDEFINED is escaping from your code into the Scheme world
somehow.

SCM_UNDEFINED is a magic value; its reason for existence is that it's
not a valid Scheme value.  So if a C function called from Scheme
returns it as its value, then you're in trouble.