[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
guile-vm: module support
From: |
Keisuke Nishida |
Subject: |
guile-vm: module support |
Date: |
Wed, 11 Apr 2001 20:29:24 -0400 |
User-agent: |
Wanderlust/2.4.0 (Rio) SEMI/1.13.7 (Awazu) FLIM/1.13.2 (Kasanui) Emacs/21.0.102 (i686-pc-linux-gnu) MULE/5.0 (SAKAKI) |
I have added a preliminary module support in my compiler.
After the below patch is applied to boot-9.scm, Guile compiles
"*.gs" files and executes them using my VM:
% cat fib.gs
(define-module (fib)
:export (fib))
(define (fib n) (if (< n 2) 1 (+ (fib (- n 1)) (fib (- n 2)))))
% guile
guile> (use-modules (fib))
guile> fib
$1 = #<program fib>
guile> (fib 20)
$2 = 10946
Currently, `define-module', `use-modules', and `export' are supported.
Actually, I can compile my repl and get it working. Some standard
module files, such as format.scm and psyntax.pp, can be compiled, but
it seems there are bugs. I'll fix them in this weekend.
Keisuke
------------------------------------------------------------------------
--- guile-core/ice-9/boot-9.scm.~1.232.~ Wed Apr 11 14:27:53 2001
+++ guile-core/ice-9/boot-9.scm Wed Apr 11 19:37:08 2001
@@ -1556,6 +1556,7 @@
(define (try-load-module name)
(or (try-module-linked name)
+ (try-module-compile name)
(try-module-autoload name)
(try-module-dynamic-link name)))
@@ -1923,6 +1924,22 @@
(and (find-and-link-dynamic-module module-name)
(init-dynamic-module module-name)))
+(define (try-module-compile module-name)
+ (let* ((reverse-name (reverse module-name))
+ (name (symbol->string (car reverse-name)))
+ (dir-hint-module-name (reverse (cdr reverse-name)))
+ (dir-hint (apply string-append
+ (map (lambda (elt)
+ (string-append (symbol->string elt) "/"))
+ dir-hint-module-name)))
+ (full (%search-load-path (in-vicinity dir-hint
+ (string-append name ".gs")))))
+ (if full
+ (let ((load/compile (module-ref (resolve-module '(system vm load))
+ 'load/compile)))
+ (load/compile full)
+ #t)
+ #f)))
(define autoloads-done '((guile . guile)))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- guile-vm: module support,
Keisuke Nishida <=