guile-user
[Top][All Lists]
Advanced

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

Re: Using guile-scmutils with REPL and compilation


From: Vladimir Zhbanov
Subject: Re: Using guile-scmutils with REPL and compilation
Date: Sat, 4 Jul 2020 17:57:37 +0300
User-agent: Mutt/1.10.1 (2018-07-13)

On Sat, Jun 20, 2020 at 02:43:00AM +0300, Viacheslav Dushin wrote:
> Hello all
> 
> I have a couple of questions about guile-scmutils.
> 
> First one:
> I run into a similar problem that is described here:
> https://lists.gnu.org/archive/html/guile-user/2008-04/msg00007.html
> Turns out the solution is to modify top-repl as said here:
> https://lists.gnu.org/archive/html/guile-user/2008-04/msg00021.html
> 
> Since I'm new to Lisp I decided to work on the ice-9 source code
> directly. I'm going to create my own scmutils-top-repl after I resolve
> all problems.
> 
> Here is how my top-repl from top-repl.scm looks like:
> 
> (define (top-repl)
>   (let ((guile-user-module (resolve-module '(guile-user))))
> 
>     (add-to-load-path "/Users/slava/.guile.d/")
>     (load  (%search-load-path  "guile-scmutils/src/load.scm"))
>     (set-current-module generic-environment)
>     ;; Use some convenient modules (in reverse order)
> 
>     (set-current-module guile-user-module)
>     (process-use-modules
>      (append
>       '(((ice-9 r5rs))
>         ((ice-9 session)))
>       (if (provided? 'regex)
>           '(((ice-9 regex)))
>           '())
>       (if (provided? 'threads)
>           '(((ice-9 threads)))
>           '())))
> 
>     (call-with-sigint
>      (lambda ()
>        (and (defined? 'setlocale)
>             (catch 'system-error
>               (lambda ()
>                 (setlocale LC_ALL ""))
>               (lambda (key subr fmt args errno)
>                 (format (current-error-port)
>                         "warning: failed to install locale: ~a~%"
>                         (strerror (car errno))))))
> 
>        (let ((status (start-repl (current-language))))
>          (run-hook exit-hook)
>          status)))
>     )
>   )
> 
> I simply added these three lines:
>     (add-to-load-path "/Users/slava/.guile.d/")
>     (load  (%search-load-path  "guile-scmutils/src/load.scm"))
>     (set-current-module generic-environment)

The question is not about scmutils :-)

You can run Guile interactively, just type 'guile' in your
terminal, and check what every command returns. For example, the
following commands will give you your load path before and after
launching 'add-to-load-path':

scheme@(guile-user)> %load-path
scheme@(guile-user)> (add-to-load-path "/Users/slava/.guile.d/")
scheme@(guile-user)> %load-path

Check, if the directory *really* contains your file
"guile-scmutils/src/load.scm", and try the following after that:

scheme@(guile-user)> (%search-load-path  "guile-scmutils/src/load.scm")

Make sure the file is found and is a string, not #f.  As I said
before (not sure you got it, sorry), 'load' will barf if its
argument is not a string.  It *will* barf if the argument is #f.
So, only if the command above returns the file name you're
searching for, try loading it:

scheme@(guile-user)> (load  (%search-load-path  "guile-scmutils/src/load.scm"))

Another way is to just use:

scheme@(guile-user)> (primitive-load "/My/absolute/file/name.scm")

If you're defining a module in your file, use the 'use-modules'
procedure to load it.

Now about your second question.

I don't know, what 'generic-environment' is.  Is it defined at
all?  Try on the prompt:

scheme@(guile-user)> generic-environment

and read what it reports.

BTW, the command '(set-current-module generic-environment)' won't
work anyway in your code, since you use '(set-current-module
guile-user-module)' just *after* it.

HTH

-- 
  Vladimir

(λ)επτόν EDA — https://github.com/lepton-eda



reply via email to

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