*** empty log message ***
[bpt/guile.git] / README
1 Installation
2 ------------
3
4 1. Install the latest Guile from CVS.
5
6 2. Install Guile VM:
7
8 % configure
9 % make install
10 % ln -s module/{system,language} /usr/local/share/guile/site/
11
12 3. Add the following lines to your ~/.guile:
13
14 (cond ((string=? (car (command-line)) "guile-vm")
15 (use-modules (system repl repl))
16 (start-repl 'scheme)
17 (quit)))
18
19 Example Session
20 ---------------
21
22 % guile-vm
23 Guile Scheme interpreter 0.4 on Guile 1.4.1
24 Copyright (C) 2001 Free Software Foundation, Inc.
25
26 Enter `,help' for help.
27 gscheme@guile> (+ 1 2)
28 $1 = 3
29 gscheme@guile> ,c -c (+ 1 2) ;; Compile into GLIL
30 (@asm (0 0 0 0)
31 (const 1)
32 (const 2)
33 (add 2)
34 (return 0))
35 gscheme@guile> ,c (+ 1 2) ;; Compile into bootcode
36 Disassembly of bootcode:
37
38 Compiled for Guile VM 0.4
39
40 nlocs = 0 nexts = 0
41
42 0 make-int8:1 ;; 1
43 1 make-int8 2 ;; 2
44 3 add
45 4 return
46
47 gscheme@guile> (define (add x y) (+ x y))
48 gscheme@guile> (add 1 2)
49 $2 = 3
50 gscheme@guile> ,x add ;; Disassemble
51 Disassembly of #<program add>:
52
53 nargs = 2 nrest = 0 nlocs = 0 nexts = 0
54
55 Bytecode:
56
57 0 local-ref 0
58 2 local-ref 1
59 4 add
60 5 return
61
62 gscheme@guile>
63
64 Write Modules
65 -------------
66
67 ---- fib.scm ---------------------------
68 (define-module (fib)
69 :use-module (system vm load)
70 :export (fib))
71
72 (load/compile "fib.gs")
73 ----------------------------------------
74
75 ---- fib.gs ----------------------------
76 (define (fib n)
77 (if (< n 2)
78 1
79 (+ (fib (- n 1)) (fib (- n 2)))))
80 ----------------------------------------
81
82 Now, expressions in fib.gsm are automatically compiled and
83 executed by the Guile VM:
84
85 % guile
86 guile> (use-modules (fib))
87 guile> (time (fib 30))
88 clock utime stime cutime cstime gctime
89 2.80 2.79 0.00 0.00 0.00 0.00
90 $1 = 1346269
91 guile> (define (fib n) (if (< n 2) 1 (+ (fib (- n 1)) (fib (- n 2)))))
92 guile> (time (fib 30))
93 clock utime stime cutime cstime gctime
94 26.05 25.01 0.17 0.00 0.00 14.33
95 $2 = 1346269
96
97 If you don't want to compile your code (e.g., for debugging purpose),
98 just change `load/compile' to `load'.