Changeset 4910


Ignore:
Timestamp:
11/29/03 03:41:23 (18 years ago)
Author:
piso
Message:

NOT compiler macro.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/precompiler.lisp

    r4909 r4910  
    22;;;
    33;;; Copyright (C) 2003 Peter Graves
    4 ;;; $Id: precompiler.lisp,v 1.15 2003-11-29 00:51:03 piso Exp $
     4;;; $Id: precompiler.lisp,v 1.16 2003-11-29 03:41:23 piso Exp $
    55;;;
    66;;; This program is free software; you can redistribute it and/or
     
    6666        form)))
    6767
    68 (define-compiler-macro not (&whole form &rest args)
    69   (if (and (= (length args) 1) (consp (car args)))
    70       (let ((op (caar args)))
    71         (cond ((eq op '>=)
    72                (cons '< (cdr (car args))))
    73               ((eq op '<)
    74                (cons '>= (cdr (car args))))
    75               (t
    76                form)))
    77       form))
     68(define-compiler-macro not (&whole form arg)
     69  (if (atom arg)
     70      form
     71      (let ((op (case (car arg)
     72                  (>= '<)
     73                  (<  '>=)
     74                  (<= '>)
     75                  (>  '<=)
     76                  (t  nil))))
     77        (if (and op
     78                 ;; (< x) => t for real x
     79                 (> (length arg) 2))
     80            (cons op (cdr arg))
     81            form))))
    7882
    7983(in-package "EXTENSIONS")
Note: See TracChangeset for help on using the changeset viewer.