Conses are working
[jscl.git] / test.lisp
1 (lambda (x y)
2   x)
3
4 (debug "hola")
5 (debug '(1 2 3 4))
6 (debug (if 2 (+ 2 1) 0))
7 (debug (= (+ 2 1) (- 4 1)))
8
9 ;;; Variables
10 (debug "---VARIABLES---")
11 (eval-when-compile
12   (%compile-defvar 'name))
13 (setq name 10)
14 (debug name)
15
16 ;;; Functions
17 (debug "---FUNCTIONS---")
18 (eval-when-compile
19   (%compile-defun 'f))
20 (fsetq f (lambda (x) (+ x 10)))
21 (debug (f 20))
22
23 ;;; Macros
24 (debug "---MACROS---")
25
26 (eval-when-compile
27   (%compile-defmacro 'defmacro
28                      (lambda (name args &rest body)
29                        (list 'eval-when-compile
30                              (list '%compile-defmacro (list 'quote name)
31                                    (list* 'lambda args body))))))
32
33 (defmacro incf (x)
34   (list 'setq x (list '+ 1 x)))
35
36 (eval-when-compile
37   (%compile-defvar 'x))
38
39 (setq x 10)
40 (incf x)
41 (debug x)
42
43
44 ;;; &rest lambda-list
45
46 (debug (lambda (&rest x) x))
47 (debug (lambda (x y &rest z) z))
48 (debug (lambda (x y &rest z) x))
49
50 ;;; Conses
51 (debug (cons 1 2))
52 (debug (car (cons 1 2)))
53 (debug (cdr (cons 1 2)))
54
55
56 ;; (eval-when-compile
57 ;;   (%compile-defmacro 'defun
58 ;;                   (lambda (name args &rest body)
59 ;;                     (list 'eval-when-compile
60 ;;                           (list 'compile-defun)
61 ;;                           (list 'fsetq (list 'lambda args (list 'progn body)))))))