Hi Bruce,

Bruce Korb <[EMAIL PROTECTED]> writes:

> *I* certainly cannot.

Do you mean that you don't *want* to, or that this is not possible?

The point is that writing Scheme code will always be easier than writing
C code, and maintaining it will be even more easier.

> And I do not understand the usage of the "file"
> argument.  What I am doing is extracting Scheme code from an encompassing
> template and handing it off for evaluation.  My program is reading the
> file, not Guile.  When I hand off the the string for evaluation, I hand
> it to that ugly thing that I do not want to maintain.  I do this in
> exactly the same way as one would with scm_c_eval_string, except I have
> the additional parameters file name and line number.  Perhaps I could
> wrap my strings in something like this:
>
> char* fmt =
> "(read-enable 'positions)
> (format #t \"evaluating `~a' from ~a:~a:~a~%%\"
>             sexp (port-filename (current-input-port))
>            (source-property sexp \"%s\")
>            (source-property sexp %d))
> (begin
>    %s
> )";
>
> and use it thus:
>
>    sprintf( buf, fmt, filename, linenum, script );
>    result = scm_c_eval_string( buf );
>
> Would that work?

That might work, but that's "ugly".  Are you evaluating reading a file
and evaluating it from C code?

Even if this is the case, nothing prevents you from writing your own
read/eval function in Scheme (along the lines of what I posted earlier)
and using it from C:

  eval_proc = scm_c_eval_string ("eval-from-file");
  result = scm_call_1 (eval_proc, scm_from_locale_string ("the-file.scm"));

Hope this helps,
Ludovic.


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel

Reply via email to