Hi,
I want to call a scheme procedure with four arguments from C.
(The example scheme procedure here is just displaying its arguments.)

(define (d-UploadRoutine a b c d)
  (display a)
  (display b)
  (display c)
  (display d))

But I can't find what the correct parameters types are - the headers
just say SCM, here are three things that give errors, two commented out


SCM proc =  gh_str2scm("d-UploadRoutine",  strlen("d-UploadRoutine"));
// proc = scm_string_to_symbol("d-UploadRoutine");
// proc = scm_string_to_symbol( gh_str2scm("d-UploadRoutine",  
strlen("d-UploadRoutine")));
SCM arg1 =  gh_str2scm("hello", strlen("hello"));
SCM arg2 =  gh_str2scm("he2lo", strlen("hello"));
SCM arg3 =  gh_str2scm("he3lo", strlen("hello"));
SCM arg4 =  gh_str2scm("he4lo", strlen("hello"));
scm_call_4(proc, arg1, arg2, arg3, arg4);

The three definitions of proc lead to the following three error messages:

ERROR: In procedure apply:
ERROR: Wrong type argument in position 1: "d-UploadRoutine"


ERROR: In procedure string->symbol:
ERROR: Wrong type argument in position 1 (expecting string): 33820865


ERROR: In procedure apply:
ERROR: Wrong type argument in position 1: d-UploadRoutine

It seems to me the docs are rather deficient here! They don't give the types of 
the
arguments, and the header only tells you they are SCM...

Help much appreciated,

Richard Shann





Reply via email to