(and ,@(cdr forms))
nil))))
+
+(defmacro or (&rest forms)
+ (cond
+ ((null forms)
+ nil)
+ ((null (cdr forms))
+ (car forms))
+ (t
+ `(if ,(car forms)
+ t
+ (or ,@(cdr forms))))))
+
+
+(defun char= (x y) (= x y))
+
+
;;;; Reader
;;; It is a basic Lisp reader. It does not use advanced stuff
(defun %peek-char (stream)
(and (< (cdr stream) (length (car stream)))
(char (car stream) (cdr stream))))
+
+(defun whitespacep (ch)
+ (or (char= ch #\space) (char= ch #\newline) (char= ch #\tab)))