[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