123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592 |
- PSL Manual 7 February 1983 List Structure
- section 7.0 page 7.1
- CHAPTER 7
CHAPTER 7
CHAPTER 7
- LIST STRUCTURE
LIST STRUCTURE
LIST STRUCTURE
- 7.1. Introduction to Lists and Pairs . . . . . . . . . 7.1
- 7.2. Basic Functions on Pairs . . . . . . . . . . . 7.2
- 7.3. Functions for Manipulating Lists. . . . . . . . . 7.4
- 7.3.1. Selecting List Elements . . . . . . . . . 7.4
- 7.3.2. Membership and Length of Lists . . . . . . . 7.6
- 7.3.3. Constructing, Appending, and Concatenating Lists . 7.6
- 7.3.4. Lists as Sets. . . . . . . . . . . . . 7.7
- 7.3.5. Deleting Elements of Lists . . . . . . . . 7.8
- 7.3.6. List Reversal. . . . . . . . . . . . . 7.9
- 7.4. Functions for Building and Searching A-Lists. . . . . 7.10
- 7.5. Substitutions . . . . . . . . . . . . . . . 7.11
- 7.1. Introduction to Lists and Pairs
7.1. Introduction to Lists and Pairs
7.1. Introduction to Lists and Pairs
- ____
The pair is a fundamental PSL data type, and is one of the major
- ____ ____
attractions of LISP programming. A pair consists of a two-item structure.
- Car Cdr
Car Cdr
In PSL the first element is called the Car and the second the Cdr; in other
- LISPs, the physical relationship of the parts may be different. An
- Car
Car
illustration of the tree structure is given below as a box diagram; the Car
- Cdr
Cdr
and the Cdr are each represented as a portion of the box.
- -----------------
- || Car | Cdr ||
- -----------------
- As an example, a tree written as ((A . B) . (C . D)) in dot-notation is
- drawn below as a box diagram.
- -----------------
- || / | \ ||
- ----/-------\----
- / \
- ----------------- -----------------
- || A | B || || C | D ||
- ----------------- -----------------
- The box diagrams are tedious to draw, so dot-notation is normally used.
- ____
Note that a space is left on each side of the . to ensure that pairs are
- _____
not confused with floats. Note also that in RLISP a dot may be used as the
List Structure 7 February 1983 PSL Manual
- page 7.2 section 7.1
- Cons
Cons
infix operator for the function Cons, as in the expression x := 'y . 'z;,
- ____
or as part of the notation for pairs, as in the expression x := '(y . z);
- (see Section 3.3.3).
- An important special case occurs frequently enough that it has a special
- ____
notation. This is a list of items, terminated by convention with the id
- NIL. The dot and surrounding parentheses are omitted, as well as the
- trailing NIL. Thus
- (A . (B . (C . NIL)))
- can be represented in list-notation as
- (A B C)
- 7.2. Basic Functions on Pairs
7.2. Basic Functions on Pairs
7.2. Basic Functions on Pairs
- ____
The following are elementary functions on pairs. All functions in this
- Chapter which require pairs as parameters signal a type mismatch error if
- the parameter given is not a pair.
- Cons
Cons _ ___ _ ___ ____ ____
(Cons U:any V:any): pair expr
- Eq
____ Eq _
Returns a pair which is not Eq to anything else and has U as its
- Car Cdr
Car _ Cdr
Car part and V as its Cdr part. In RLISP syntax the dot, ".", is
- Cons
Cons
an infix operator meaning Cons. Thus (A . (B . fn C) . D) is
- Cons Cons Cons
Cons Cons Cons
equivalent to Cons (A, Cons (Cons (B, fn C), D)). See Section
- 3.3.3 for more discussion of how dot is read.
- Car
Car _ ____ ___ ____ ________ ____
(Car U:pair): any open-compiled, expr
- _
The left part of U is returned. A type mismatch error occurs if
- _ ____ _
U is not a pair, except when U is NIL. Then NIL is returned.
- Car Cons
Car Cons
(Car (Cons a b)) ==> a.
- Cdr
Cdr _ ____ ___ ____ ________ ____
(Cdr U:pair): any open-compiled, expr
- _
The right part of U is returned. A type mismatch error occurs if
- _ ____ _
U is not a pair, except when U is NIL. Then NIL is returned.
- Cdr Cons
Cdr Cons
(Cdr (Cons a b)) ==> b.
- Car Cdr
Car Cdr
The composites of Car and Cdr are supported up to four levels.
PSL Manual 7 February 1983 List Structure
- section 7.2 page 7.3
- Car Cdr
Car Cdr
Car Cdr
- Caar Cdar Cadr Cddr
Caar Cdar Cadr Cddr
Caar Cdar Cadr Cddr
- Caaar Cdaar Cadar Cddar Caadr Cdadr Caddr Cdddr
Caaar Cdaar Cadar Cddar Caadr Cdadr Caddr Cdddr
Caaar Cdaar Cadar Cddar Caadr Cdadr Caddr Cdddr
- Caaaar Cadaar Caadar Caddar Caaadr Cadadr Caaddr Cadddr
Caaaar Cadaar Caadar Caddar Caaadr Cadadr Caaddr Cadddr
Caaaar Cadaar Caadar Caddar Caaadr Cadadr Caaddr Cadddr
- Cdaaar Cddaar Cdadar Cdddar Cdaadr Cddadr Cdaddr Cddddr
Cdaaar Cddaar Cdadar Cdddar Cdaadr Cddadr Cdaddr Cddddr
Cdaaar Cddaar Cdadar Cdddar Cdaadr Cddadr Cdaddr Cddddr
- ____
____
____
expr
expr
These are all exprs of one argument. They may return any type
- and are generally open-compiled. An example of their use is that
- Cddar Cdr Cdr Car Car Cdr
Cddar Cdr Cdr Car Car Cdr
Cddar p is equivalent to Cdr Cdr Car p. As with Car and Cdr, a
- type mismatch error occurs if the argument does not possess the
- specified component.
- As an alternative to employing chains of CxxxxR to obscure depths,
- ____
particularly in extracting elements of a list, consider the use of the
- First Second Third Fourth Nth
First Second Third Fourth Nth
functions First, Second, Third, Fourth, or Nth (Section 7.3.1), or possibly
- even the Defstruct package (Section 17.6).
- NCons
NCons _ ___ ____ ____ ________ ____
(NCons U:any): pair open-compiled, expr
- Cons
Cons _
Equivalent to Cons (U, NIL).
- XCons
XCons _ ___ _ ___ ____ ____ ________ ____
(XCons U:any V:any): pair open-compiled, expr
- Cons
Cons _ _
Equivalent to Cons (V, U).
- Copy
Copy _ ___ ___ ____
(Copy X:any): any expr
- ____ _
Copies all pairs in X, but does not make copies of atoms
- (including vectors and strings). For example, if A is
- ([2 5] "ATOM")
- and B is the result of (Copy A), then
- (Eq A B) is NIL
- but (Eq (Car A) (Car B)) is T
- and (Eq (Cadr A) (Cadr B)) is T
- TotalCopy Copy
TotalCopy Copy
See TotalCopy in Section 8.5. Note that Copy is recursive and
- will not terminate if its argument is a circular list.
- See Chapter 8 for other relevant functions.
- The following functions are known as "destructive" functions, because
- they change the structure of the pair given as their argument, and
- consequently change the structure of the object containing the pair. They
- are most frequently used for various "efficient" functions (e.g. the
List Structure 7 February 1983 PSL Manual
- page 7.4 section 7.2
- ReverseIP NConc DeleteIP
ReverseIP NConc DeleteIP
non-copying ReverseIP and NConc functions, and destructive DeleteIP) and to
- build structures that have deliberately shared sub-structure. They are
- also capable of creating circular structures, which create havoc with
- careful
careful
normal printing and list traversal functions. Be careful using them.
- RplacA
RplacA _ ____ _ ___ ____ ____ ________ ____
(RplacA U:pair V:any): pair open-compiled, expr
- Car
Car _ _ _
The Car of the pair U is replaced by V, and the modified U is
- _ _
returned. (If U is (a . b) then (V .b) is returned). A type
- _
mismatch error occurs if U is not a pair.
- RplacD
RplacD _ ____ _ ___ ____ ____ ________ ____
(RplacD U:pair V:any): pair open-compiled, expr
- Cdr
Cdr _ _ _
The Cdr of the pair U is replaced by V, and the modified U is
- _ _
returned. (If U is (a . b) then (a . V) is returned). A type
- _
mismatch error occurs if U is not a pair.
- RplacW
RplacW _ ____ _ ____ ____ ____
(RplacW A:pair B:pair): pair expr
- Car Car
Car _ Car
Replaces the whole pair: the Car of A is replaced with the Car
- Cdr Cdr
_ Cdr _ Cdr _ _
of B, and the Cdr of A with the Cdr of B. The modified A is
- returned.
- [??? Should we add some more functions here someday? Probably the
[??? Should we add some more functions here someday? Probably the
[??? Should we add some more functions here someday? Probably the
- RLISP guys that do arbitrary depth member type stuff. ???]
RLISP guys that do arbitrary depth member type stuff. ???]
RLISP guys that do arbitrary depth member type stuff. ???]
- 7.3. Functions for Manipulating Lists
7.3. Functions for Manipulating Lists
7.3. Functions for Manipulating Lists
- ____ ____
The following functions are meant for the special pairs which are lists,
- as described in Section 7.1. Note that the functions described in Chapter
- 8 can also be used on lists.
- [??? Make some mention of mapping with FOR...COLLECT and such like.
[??? Make some mention of mapping with FOR...COLLECT and such like.
[??? Make some mention of mapping with FOR...COLLECT and such like.
- ???]
???]
???]
- 7.3.1. Selecting List Elements
7.3.1. Selecting List Elements
7.3.1. Selecting List Elements
- First
First _ ____ ___ _____
(First L:pair): any macro
- Car
Car _
A synonym for Car L.
PSL Manual 7 February 1983 List Structure
- section 7.3 page 7.5
- Second
Second _ ____ ___ _____
(Second L:pair): any macro
- Cadr
Cadr _
A synonym for Cadr L.
- Third
Third _ ____ ___ _____
(Third L:pair): any macro
- Caddr
Caddr _
A synonym for Caddr L.
- Fourth
Fourth _ ____ ___ _____
(Fourth L:pair): any macro
- Cadddr
Cadddr _
A synonym for Cadddr L.
- Rest
Rest _ ____ ___ _____
(Rest L:pair): any macro
- Cdr
Cdr _
A synonym for Cdr L.
- LastPair
LastPair _ ____ ___ ____
(LastPair L:pair): any expr
- ____ ____
Last pair of a list. It is often useful to think of this as a
- pointer to the last element for use with destructive functions
- RplacA
RplacA _
such as RplacA. Note that if L is atomic a type mismatch error
- occurs.
- (De LastPair (L)
- (Cond ((Null (Rest L)) L)
- (T (LastPair (Rest L)))))
- LastCar
LastCar _ ___ ___ ____
(LastCar L:any): any expr
- ____ _
Returns the last element of the list L. A type mismatch error
- First LastPair
_ First LastPair _
results if L is not a list. Equivalent to First LastPair L.
- Nth
Nth _ ____ _ _______ ___ ____
(Nth L:pair N:integer): any expr
- ____ _ _
Returns the Nth element of the list L. If L is atomic or
- _
contains fewer than N elements, an out of range error occurs.
- First PNth
First PNth
Equivalent to (First (PNth L N)).
- PNth
PNth _ ____ _ _______ ___ ____
(PNth L:list N:integer): any expr
- ____ ____ _
Returns list starting with the Nth element of a list L. Note
- that it is often useful to view this as a pointer to the Nth
- RplacA
_ RplacA
element of L for use with destructive functions such as RplacA.
- _ _
If L is atomic or contains fewer than N elements, an out of range
- error occurs.
List Structure 7 February 1983 PSL Manual
- page 7.6 section 7.3
- (De PNth (L N)
- (Cond ((Leq N 1) L)
- (T (PNth (Cdr L) (Sub1 N)))))
- 7.3.2. Membership and Length of Lists
7.3.2. Membership and Length of Lists
7.3.2. Membership and Length of Lists
- Member
Member _ ___ _ ____ _____ _______ ____
(Member A:any L:list): extra-boolean expr
- Equal
_ Equal ____
Returns NIL if A is not Equal to some top level element of list
- _ _
L; otherwise it returns the remainder of L whose first element is
- _
A.
- (De Member (A L)
- (Cond((Null L) Nil)
- ((Equal A (First L)) L)
- (T (Member A (Rest L)))))
- MemQ
MemQ _ ___ _ ____ _____ _______ ____
(MemQ A:any B:list): extra-boolean expr
- Member Eq
Member Eq
Same as Member, but an Eq check is used for comparison.
- (De Memq (A L)
- (Cond((Null L) Nil)
- ((Eq A (First L)) L)
- (T (Memq A (Rest L)))))
- Length
Length _ ___ _______ ____
(Length X:any): integer expr
- ____ _
The top level length of the list X is returned.
- (De Length (X)
- (Cond((Atom X) 0)
- (T (Plus (Length X) 1))))
- 7.3.3. Constructing, Appending, and Concatenating Lists
7.3.3. Constructing, Appending, and Concatenating Lists
7.3.3. Constructing, Appending, and Concatenating Lists
- List
List _ ___ ____ _____
(List [U:any]): list fexpr
- ____ ____
Construct a list of the evaluated arguments. A list of the
- _
evaluation of each element of U is returned.
- Append
Append _ ____ _ ____ ____ ____
(Append U:list V:list): list expr
- ____ _
Returns a constructed list in which the last element of U is
- _ ____ _ _
followed by the first element of V. The list U is copied, but V
PSL Manual 7 February 1983 List Structure
- section 7.3 page 7.7
- is not.
- (De Append (U V)
- (Cond ((Null U) V)
- (T (Cons (Car U) (Append (Cdr U) V)))))
- NConc
NConc _ ____ _ ____ ____ ____
(NConc U:list V:list): list expr
- Append
Append _ _
Destructive version of Append. Concatenates V to U without
- Cdr
_ Cdr _ _
copying U. The last Cdr of U is modified to point to V. See the
- warning on page 7.3 about the use of destructive functions.
- (De Nconc (U V)
- (Cond ((Null U) V)
- (T (Rplacd (Lastcdr U V)))))
- AConc
AConc _ ____ _ ___ ____ ____
(AConc U:list V:any): list expr
- _ ____ _
Destructively adds element V to the tail of list U.
- LConc
LConc ___ ____ ____ ____ ____ ____
(LConc PTR:list ELEM:list): list expr
- NConc
NConc
Effectively NConc, but avoids scanning from the front to the end
- RPLACD
___ RPLACD ___ ____
of PTR for the RPLACD(PTR, ELEM) by maintaining a pointer to end
- LastPair
____ ___ ___ ____ LastPair ____
of the list PTR. PTR is (list . LastPair list). Returns updated
- ___ ___
PTR. PTR should be initialized to NIL . NIL before calling the
- ____
first time. Used to build lists from left to right.
- TConc
TConc ___ ____ ____ ___ ____ ____
(TConc PTR:list ELEM:any): list expr
- AConc
AConc
Effectively AConc, but avoids scanning from the front to the end
- RPLACD List
___ RPLACD ___ List ____
of PTR for the RPLACD(PTR, List(ELEM)) by maintaining a pointer
- LastPair
____ ___ ___ ____ LastPair ____
to end of the list PTR. PTR is (list . LastPair list). Returns
- ___ ___
updated PTR. PTR should be initialized to NIL . NIL before
- ____
calling the first time. Used to build lists from left to right.
- 7.3.4. Lists as Sets
7.3.4. Lists as Sets
7.3.4. Lists as Sets
- ____
A set is a list in which each element occurs only once. Order of
- elements does not matter, so these functions may not preserve order.
- Adjoin
Adjoin _______ ___ ___ ____ ____ ____
(Adjoin ELEMENT:any SET:list): list expr
- Equal
_______ ___ Equal
Add ELEMENT to SET if it is not already on the top level. Equal
- is used to test for equality.
List Structure 7 February 1983 PSL Manual
- page 7.8 section 7.3
- AdjoinQ
AdjoinQ _______ ___ ___ ____ ____ ____
(AdjoinQ ELEMENT:any SET:list): list expr
- Adjoin Eq
Adjoin Eq _______ ___
Adjoin using Eq for the test whether ELEMENT is already in SET.
- Union
Union _ ____ _ ____ ____ ____
(Union X:list Y:list): list expr
- Set union.
- UnionQ
UnionQ _ ____ _ ____ ____ ____
(UnionQ X:list Y:list): list expr
- Eq Union
Eq Union
Eq version of Union.
- InterSection
InterSection _ ____ _ ____ ____ ____
(InterSection U:list V:list): list expr
- Set intersection.
- InterSectionQ
InterSectionQ _ ____ _ ____ ____ ____
(InterSectionQ U:list V:list): list expr
- Eq InterSection
Eq InterSection
Eq version of InterSection.
- List2Set
List2Set ___ ____ ____ ____
(List2Set SET:list): list expr
- Equal
___ Equal
Remove redundant elements from the top level of SET using Equal.
- List2SetQ
List2SetQ ___ ____ ____ ____
(List2SetQ SET:list): list expr
- Eq
___ Eq
Remove redundant elements from the top level of SET using Eq.
- 7.3.5. Deleting Elements of Lists
7.3.5. Deleting Elements of Lists
7.3.5. Deleting Elements of Lists
- xxxIP xxx
xxxIP xxx
Note that functions with names of the form xxxIP indicate that xxx is
- done InPlace.
- Delete
Delete _ ___ _ ____ ____ ____
(Delete U:any V:list): list expr
- _ _
Returns V with the first top level occurrence of U removed from
- _ _
it. That portion of V before the first occurrence of U is
- copied.
- (De Delete (U V)
- (Cond((Null V) Nil)
- ((Equal (First V) U) (Rest V))
- (T (Cons (First V) (Delete U (Rest V))))))
PSL Manual 7 February 1983 List Structure
- section 7.3 page 7.9
- Del
Del _ ________ _ ___ _ ____ ____ ____
(Del F:function U:any V:list): list expr
- Delete
Delete _
Generalized Delete function with F as the comparison function.
- DeletIP
DeletIP _ ___ _ ____ ____ ____
(DeletIP U:any V:list): list expr
- Delete RplacD
Delete _ RplacD _
Destructive Delete; modifies V using RplacD. Do not depend on V
- ____
itself correctly referring to list.
- DelQ
DelQ _ ___ _ ____ ____ ____
(DelQ U:any V:list): list expr
- Eq
_ _ Eq
Delete U from V, using Eq for comparison.
- DelQIP
DelQIP _ ___ _ ____ ____ ____
(DelQIP U:any V:list): list expr
- DelQ DeletIP
DelQ DeletIP
Destructive version of DelQ; see DeletIP.
- DelAsc
DelAsc _ ___ _ _ ____ _ ____ ____
(DelAsc U:any V:a-list): a-list expr
- _ _
Remove first (U . xxx) from V.
- DelAscIP
DelAscIP _ ___ _ _ ____ _ ____ ____
(DelAscIP U:any V:a-list): a-list expr
- DelAsc
DelAsc
Destructive DelAsc.
- DelatQ
DelatQ _ ___ _ _ ____ _ ____ ____
(DelatQ U:any V:a-list): a-list expr
- Eq
_ _ Eq _
Delete first (U . xxx) from V, using Eq to check equality with U.
- DelatQIP
DelatQIP _ ___ _ _ ____ _ ____ ____
(DelatQIP U:any V:a-list): a-list expr
- DelatQ
DelatQ
Destructive DelatQ.
- 7.3.6. List Reversal
7.3.6. List Reversal
7.3.6. List Reversal
- Reverse
Reverse _ ____ ____ ____
(Reverse U:list): list expr
- _
Returns a copy of the top level of U in reverse order.
List Structure 7 February 1983 PSL Manual
- page 7.10 section 7.3
- (De Reverse (U)
- (Prog (W)
- (While U
- (ProgN
- (Setq W (Cons (Car U) W))
- (Setq U (Cdr U))))
- (Return W)))
- ReversIP
ReversIP _ ____ ____ ____
(ReversIP U:list): list expr
- Reverse
Reverse
Destructive Reverse.
- 7.4. Functions for Building and Searching A-Lists
7.4. Functions for Building and Searching A-Lists
7.4. Functions for Building and Searching A-Lists
- Assoc
Assoc _ ___ _ _ ____ ____ ___ ____
(Assoc U:any V:a-list): {pair, NIL} expr
- Car
_ Car _ ____ _
If U occurs as the Car portion of an element of the a-list V, the
- ____ _
pair in which U occurred is returned, else NIL is returned.
- Assoc
Assoc _ ____
Assoc might not detect a poorly formed a-list so an invalid
- Car Cdr
Car Cdr
construction may be detected by Car or Cdr.
- (De Assoc (U V)
- (Cond ((Null V) Nil)
- ((Atom (Car V))
- (Error 000 (List V "is a poorly formed alis
- ((Equal U (Caar V)) (Car V))
- (T (Assoc U (Cdr V)))))
- Atsoc
Atsoc __ ___ __ ___ ___ ____
(Atsoc R1:any R2:any): any expr
- Car Eq Eq Assoc
__ ____ Car Eq __ Eq Assoc
Scan R2 for pair with Car Eq R1. Eq version of Assoc.
- Ass
Ass _ ________ _ ___ _ _ ____ ____ ___ ____
(Ass F:function U:any V:a-list): {pair, NIL} expr
- Ass Assoc
Ass Assoc _
Ass is a generalized Assoc function. F is the comparison
- function.
- SAssoc
SAssoc _ ___ _ _ ____ __ ________ ___ ____
(SAssoc U:any V:a-list FN:function): any expr
- _ ____ _ _ _
Searches the a-list V for an occurrence of U. If U is not in the
- _ ____ __
a-list, the evaluation of function FN is returned.
PSL Manual 7 February 1983 List Structure
- section 7.4 page 7.11
- (De SAssoc (U V FN)
- (Cond ((Null V) (FN))
- ((Equal U (Caar V)) (Car V))
- (T (SAssoc U (Cdr V) FN))))
- Pair
Pair _ ____ _ ____ _ ____ ____
(Pair U:list V:list): a-list expr
- _ _ ____
U and V are lists which must have an identical number of
- ____
elements. If not, an error occurs. Returned is a list in which
- Car
____ Car ____ _
each element is a pair, the Car of the pair being from U and the
- Cdr
Cdr _
Cdr being the corresponding element from V.
- (De Pair (U V)
- (Cond ((And U V)(Cons (Cons (Car U)(Car V))
- (Pair (Cdr U)(Cdr V))))
- ((Or U V)(Error 000 "Different length lists i
- (T Nil)))
- 7.5. Substitutions
7.5. Substitutions
7.5. Substitutions
- Subst
Subst _ ___ _ ___ _ ___ ___ ____
(Subst U:any V:any W:any): any expr
- _ _
Returns the result of substituting U for all occurrences of V in
- _ _ _
W. Copies all of W which is not replaced by U. The test used is
- Equal
Equal
Equal.
- (De Subst (U V W)
- (Cond ((Null W) Nil)
- ((Equal V W) U)
- ((Atom W) W)
- (T (Cons (Subst U V (Car W))(Subst U V (Cdr
- SubstIP
SubstIP _ ___ _ ___ _ ___ ___ ____
(SubstIP U:any V:any W:any): any expr
- Subst
Subst
Destructive Subst.
- SubLis
SubLis _ _ ____ _ ___ ___ ____
(SubLis X:a-list Y:any): any expr
- Subst
Subst
This performs a series of Substs in parallel. The value returned
- Cdr
Cdr
is the result of substituting the Cdr of each element of the
- Car
_ ____ _ Car
a-list X for every occurrence of the Car part of that element in
- _
Y.
List Structure 7 February 1983 PSL Manual
- page 7.12 section 7.5
- (De SubLis (X Y)
- (Cond
- ((Null X) Y)
- (T
- (Prog (U)
- (Setq U (Assoc Y X))
- (Return
- (Cond
- (U (Cdr U))
- ((Atom Y) Y)
- (T (Cons (SubLis X (Car Y)) (SubLis X (Cdr Y))
- SublA
SublA _ _ ____ _ ___ ___ ____
(SublA U:a-list V:any): any expr
- Eq SubLis
Eq SubLis
Eq version of SubLis; replaces atoms only.
|