guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: inserting a file in a module?


From: Damien Mattei
Subject: Re: inserting a file in a module?
Date: Thu, 5 Oct 2023 11:12:48 +0200

yes , you're right , it is like preprocessor in C , include is like a
directive, files are included and later all is evaluated...

On Thu, Oct 5, 2023 at 9:35 AM <tomas@tuxteam.de> wrote:
>
> On Thu, Oct 05, 2023 at 08:39:48AM +0200, Damien Mattei wrote:
> > hello,
> > i have problem i do not understand when inserting a file in a module,
> > things i never done before:
> >
> > (define-module (matrix)
> >
> >   #:use-module (oop goops)
> >
> >   #:use-module ((guile)
> >         #:select (*)
> >         #:prefix orig:)
> >
> >   #:export (<matrix>
> >         matrix
> >         matrix-v)
> >
> >   )
> >
> > (define scheme-plus-path "/Users/mattei/Dropbox/git/Scheme-PLUS-for-Guile")
> >
> > (include (string-append scheme-plus-path "/Scheme+.scm"))
> >
> > ...
> >
> > i get this error:
> > scheme@(guile-user)> (use-modules (matrix))
> > ;;; note: source file /usr/local/share/guile/site/3.0/matrix.scm
> > ;;;       newer than compiled
> > /Users/mattei/.cache/guile/ccache/3.0-LE-8-4.6/usr/local/share/guile/site/3.0/matrix.scm.go
> > ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
> > ;;;       or pass the --no-auto-compile argument to disable.
> > ;;; compiling /usr/local/share/guile/site/3.0/matrix.scm
> > ;;; WARNING: compilation of /usr/local/share/guile/site/3.0/matrix.scm 
> > failed:
> > ;;; In procedure string-prefix?: Wrong type argument in position 2
> > (expecting string): (string-append scheme-plus-path "/Scheme+.scm")
> > While compiling expression:
> > In procedure string-prefix?: Wrong type argument in position 2
> > (expecting string): (string-append scheme-plus-path "/Scheme+.scm")
> >
> > but it works if i replace the string-append by the string already appended :
> > (include "/Users/mattei/Dropbox/git/Scheme-PLUS-for-Guile/Scheme+.scm")
>
> I'd guess that the define makes the binding available at run
> time and thus include comes "too early" (i.e. compile time):
> the variable somehow already exists as far as include can see
> but has no value...
>
> I don't know whether it is TRT, but you might try wrapping your
> define form in (eval-when (compile) ...) or similar.
>
> But see the doc of eval-when, especially if you have any cats.
>
> Cheers
> --
> t



reply via email to

[Prev in Thread] Current Thread [Next in Thread]