summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README92
1 files changed, 39 insertions, 53 deletions
diff --git a/README b/README
index f7a79bd4c..3e05b6962 100644
--- a/README
+++ b/README
@@ -7,10 +7,12 @@ Installation
% configure
% make install
- % ln -s module/{system,language} /usr/local/share/guile/site/
+ % ln -s module/{guile,system,language} /usr/local/share/guile/
3. Add the following lines to your ~/.guile:
+ (use-modules (system vm core)
+
(cond ((string=? (car (command-line)) "guile-vm")
(use-modules (system repl repl))
(start-repl 'scheme)
@@ -20,79 +22,63 @@ Example Session
---------------
% guile-vm
- Guile Scheme interpreter 0.4 on Guile 1.4.1
+ Guile Scheme interpreter 0.5 on Guile 1.4.1
Copyright (C) 2001 Free Software Foundation, Inc.
Enter `,help' for help.
- gscheme@guile> (+ 1 2)
- $1 = 3
- gscheme@guile> ,c -c (+ 1 2) ;; Compile into GLIL
- (@asm (0 0 0 0)
+ scheme@guile-user> (+ 1 2)
+ 3
+ scheme@guile-user> ,c -c (+ 1 2) ;; Compile into GLIL
+ (@asm (0 1 0 0)
+ (module-ref #f +)
(const 1)
(const 2)
- (add 2)
- (return 0))
- gscheme@guile> ,c (+ 1 2) ;; Compile into bootcode
- Disassembly of bootcode:
-
- Compiled for Guile VM 0.4
+ (tail-call 2))
+ scheme@guile-user> ,c (+ 1 2) ;; Compile into object code
+ Disassembly of #<objcode 403c5fb0>:
nlocs = 0 nexts = 0
- 0 make-int8:1 ;; 1
- 1 make-int8 2 ;; 2
- 3 add
- 4 return
+ 0 link "+" ;; (+ . ???)
+ 3 variable-ref
+ 4 make-int8:1 ;; 1
+ 5 make-int8 2 ;; 2
+ 7 tail-call 2
- gscheme@guile> (define (add x y) (+ x y))
- gscheme@guile> (add 1 2)
- $2 = 3
- gscheme@guile> ,x add ;; Disassemble
+ scheme@guile-user> (define (add x y) (+ x y))
+ scheme@guile-user> (add 1 2)
+ 3
+ scheme@guile-user> ,x add ;; Disassemble
Disassembly of #<program add>:
nargs = 2 nrest = 0 nlocs = 0 nexts = 0
Bytecode:
- 0 local-ref 0
- 2 local-ref 1
- 4 add
- 5 return
+ 0 object-ref 0 ;; (+ . #<primitive-procedure +>)
+ 2 variable-ref
+ 3 local-ref 0
+ 5 local-ref 1
+ 7 tail-call 2
- gscheme@guile>
+ Objects:
-Write Modules
--------------
+ 0 (+ . #<primitive-procedure +>)
- ---- fib.scm ---------------------------
- (define-module (fib)
- :use-module (system vm load)
- :export (fib))
+ scheme@guile-user>
- (load/compile "fib.gs")
- ----------------------------------------
+Compile Modules
+---------------
- ---- fib.gs ----------------------------
- (define (fib n)
- (if (< n 2)
- 1
- (+ (fib (- n 1)) (fib (- n 2)))))
- ----------------------------------------
+Use `guilec' to compile your modules:
-Now, expressions in fib.gsm are automatically compiled and
-executed by the Guile VM:
+ % cat fib.scm
+ (define-module (fib) :export (fib))
+ (define (fib n) (if (< n 2) 1 (+ (fib (- n 1)) (fib (- n 2)))))
+ % guilec fib.scm
+ Wrote fib.go
% guile
guile> (use-modules (fib))
- guile> (time (fib 30))
- clock utime stime cutime cstime gctime
- 2.80 2.79 0.00 0.00 0.00 0.00
- $1 = 1346269
- guile> (define (fib n) (if (< n 2) 1 (+ (fib (- n 1)) (fib (- n 2)))))
- guile> (time (fib 30))
- clock utime stime cutime cstime gctime
- 26.05 25.01 0.17 0.00 0.00 14.33
- $2 = 1346269
-
-If you don't want to compile your code (e.g., for debugging purpose),
-just change `load/compile' to `load'.
+ guile> (fib 8)
+ 34