(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP")
(FILECREATED "14-Apr-88 12:37:05" {ERINYES}<LISPUSERS>LYRIC>UTILISOPRS.\;1 2918
|changes| |to:| (FNS |FIntersection| |FUnion|)
|previous| |date:| "24-Mar-87 19:54:30" |{XDE:MCS:STANFORD}<LISPUSERS>LYRIC>UTILISOPRS.;1|)
; Copyright (c) 1988 by Xerox Corporation. All rights reserved.
(PRETTYCOMPRINT UTILISOPRSCOMS)
(RPAQQ UTILISOPRSCOMS ((I.S.OPRS COLLECTWHEN INTERSECT MAXIMIZE MINIMIZE REPEATEACHTIME UNION UNIQUE
YIELD FIRSTTIME |fintersect| |funion|)
(ADDVARS (LOCALVARS $$STATE $$TMP $$UIV $$UNQ $$FLTR)
(SYSLOCALVARS $$STATE $$TMP $$UIV $$UNQ $$FLTR))
(FNS |FIntersection| |FUnion|)))
(DECLARE\: EVAL@COMPILE
(I.S.OPR 'COLLECTWHEN NIL '(|bind| $$FLTR |when| (SETQ $$FLTR BODY)
|collect| $$FLTR))
(I.S.OPR 'INTERSECT '(PROGN (INTBOD ← BODY)
(OR ($$VAL ← (COND ($$VAL (INTERSECTION $$VAL INTBOD))
(T INTBOD)))
(GO $$OUT))) '(BIND INTBOD))
(I.S.OPR 'MAXIMIZE NIL '(|largest| BODY |yield| $$EXTREME))
(I.S.OPR 'MINIMIZE NIL '(|smallest| BODY |yield| $$EXTREME))
(I.S.OPR 'REPEATEACHTIME NIL '(|repeatuntil| (PROGN BODY NIL)))
(I.S.OPR 'UNION '($$VAL ← (UNION $$VAL BODY)))
(I.S.OPR 'UNIQUE '(|if| $$VAL |then| ($$VAL← NIL)
(GO $$OUT)
|else| $$VAL ← $$UNQ $$UIV ← I.V.)
'(|bind| ($$UNQ $$UIV)
|when| $$UNQ ← BODY |finally| (I.V.← (AND $$VAL $$UIV))))
(I.S.OPR 'YIELD NIL '(FINALLY (RETURN BODY)))
(I.S.OPR 'FIRSTTIME NIL '(|bind| ($$MEMO ← T)
|unless|
(AND $$MEMO (PROGN BODY T)
(SETQ $$MEMO NIL))))
(I.S.OPR '|fintersect| '(PROGN (INTBOD ← BODY)
(OR ($$VAL ← (COND ($$VAL (|FIntersection| $$VAL INTBOD))
(T INTBOD)))
(GO $$OUT))) '(BIND INTBOD))
(I.S.OPR '|funion| '($$VAL ← (|FUnion| $$VAL BODY)))
)
(ADDTOVAR LOCALVARS $$STATE $$TMP $$UIV $$UNQ $$FLTR)
(ADDTOVAR SYSLOCALVARS $$STATE $$TMP $$UIV $$UNQ $$FLTR)
(DEFINEQ
(|FIntersection|
(LAMBDA (X Y) (* TAL "27-OCT-82 17:54")
(|for| |item| |in| X |when| (FMEMB |item| Y) |collect| |item|)))
(|FUnion|
(LAMBDA (X Y) (* TAL "28-OCT-82 12:00")
(|bind| (|tmp| ← Y) |for| |item| |in| X |unless| (FMEMB |item| |tmp|)
|do| (|push| |tmp| |item|) |finally| (RETURN |tmp|))))
)
(PUTPROPS UTILISOPRS COPYRIGHT ("Xerox Corporation" 1988))
(DECLARE\: DONTCOPY
(FILEMAP (NIL (2350 2836 (|FIntersection| 2360 . 2560) (|FUnion| 2562 . 2834)))))
STOP