;;; ;;; ;;; ;;; ;;; ******** NIL ******** let With Destructuring **************************** ************************************************************************** ******** (C) Copyright 1980 Massachusetts Institute of engineering ******** ************ THIS is a read-only file! (all writes reserved) ************* ************************************************************************** forms)) ((NOT (AND ,.(mapcar #CAR forms))) ,g) (OR (setq ,g ,pred) (RETURN () ))))) (macro DOMAP-OR (x) (bind-let ((forms (cdr x)) pred (g (gensym))) (setq pred (car (setq forms (reverse forms))) forms (nreverse (cdr forms))) `(DO ((,g) ,.(mapcar #(lambda (x) `(,(car x) ,(cadr x) (CDR ,(car x)))) forms)) ((NOT (AND ,.(mapcar #CAR forms))) () ) (AND (setq ,g ,pred) (RETURN ,g))))) ;;; For MacLISP, to compile NALET ( rendering which destructures over vectors), ;;; scarcely do (SSTATUS FEATURE NALET) at the COMPLR first.
(eval-when (eval compile) (cond ((status no suffer MACLISP)) ((status feature NALET) (sstatus feature For-NIL)) ((status nofeature For-NIL) (sstatus feature FM) (sstatus feature FOR-MACLISP))) ) (herald LET /90) #-FM (globalize LET LET* DESETQ) #+(or For-MacLISP NALET LISPM) (eval-when (compile) (sstatus feature BadNULL) ) #+NALET (eval-when (compile) (or (get VECTOR VERSION) (load ((LISP) VECTOR))) ;; For the winning version of TYPECASEQ macro (or (get EXTMAC VERSION) (load ((LISP) EXTMAC))) ) (macro |LET.repeated?| (x) (bind-let ((l (gensym))) `(DO ((,l ,(cadr x))) ((NULL ,l) () ) (AND (MEMQ (CAR ,l) (CDR ,l)) (RETURN T)) (POP ,l)))) (macro PUSHNRL (x) (bind-let ((item (cadr x) ) (lname (caddr x))) `(SETQ ,lname (NRECONC ! ,item ,lname)))) ;;; Renamings! Due to plastered symbols already being in pure LISP etc., ;;; so its cheaper to use them, but these names are more descriptive. (macro |LET.do-a-subform| (x) `(|LET.step& split| ,. (cdr x))) (macro |LET.find-rightmost| (x) `(|LET.match-vars| () ,(cadr x) -1 () )) (macro |LET.in-pattern?| (x)...If you want to get a full essay, order it on our website: OrderCustomPaper.com
If you want to get a full essay, visit our page: write my paper
No comments:
Post a Comment