*** empty log message ***
[bpt/guile.git] / README
diff --git a/README b/README
dissimilarity index 72%
index f7a79bd..3e05b69 100644 (file)
--- a/README
+++ b/README
@@ -1,98 +1,84 @@
-Installation
-------------
-
-1. Install the latest Guile from CVS.
-
-2. Install Guile VM:
-
-  % configure
-  % make install
-  % ln -s module/{system,language} /usr/local/share/guile/site/
-
-3. Add the following lines to your ~/.guile:
-
-  (cond ((string=? (car (command-line)) "guile-vm")
-        (use-modules (system repl repl))
-        (start-repl 'scheme)
-        (quit)))
-
-Example Session
----------------
-
-  % guile-vm
-  Guile Scheme interpreter 0.4 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)
-    (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
-
-  nlocs = 0  nexts = 0
-
-     0    make-int8:1                     ;; 1
-     1    make-int8 2                     ;; 2
-     3    add
-     4    return
-
-  gscheme@guile> (define (add x y) (+ x y))
-  gscheme@guile> (add 1 2)
-  $2 = 3
-  gscheme@guile> ,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
-
-  gscheme@guile> 
-
-Write Modules
--------------
-
-  ---- fib.scm ---------------------------
-  (define-module (fib)
-    :use-module (system vm load)
-    :export (fib))
-
-  (load/compile "fib.gs")
-  ----------------------------------------
-
-  ---- fib.gs ----------------------------
-  (define (fib n)
-    (if (< n 2)
-       1
-       (+ (fib (- n 1)) (fib (- n 2)))))
-  ----------------------------------------
-
-Now, expressions in fib.gsm are automatically compiled and
-executed by the Guile VM:
-
-  % 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'.
+Installation
+------------
+
+1. Install the latest Guile from CVS.
+
+2. Install Guile VM:
+
+  % configure
+  % make install
+  % 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)
+        (quit)))
+
+Example Session
+---------------
+
+  % guile-vm
+  Guile Scheme interpreter 0.5 on Guile 1.4.1
+  Copyright (C) 2001 Free Software Foundation, Inc.
+
+  Enter `,help' for help.
+  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)
+    (tail-call 2))
+  scheme@guile-user> ,c (+ 1 2)                ;; Compile into object code
+  Disassembly of #<objcode 403c5fb0>:
+
+  nlocs = 0  nexts = 0
+
+     0    link "+"                        ;; (+ . ???)
+     3    variable-ref
+     4    make-int8:1                     ;; 1
+     5    make-int8 2                     ;; 2
+     7    tail-call 2
+
+  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    object-ref 0                    ;; (+ . #<primitive-procedure +>)
+     2    variable-ref
+     3    local-ref 0
+     5    local-ref 1
+     7    tail-call 2
+
+  Objects:
+
+     0    (+ . #<primitive-procedure +>)
+
+  scheme@guile-user> 
+
+Compile Modules
+---------------
+
+Use `guilec' to compile your modules:
+
+  % 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> (fib 8)
+  34