123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567 |
- PSL Manual 7 February 1983 Data Types
- section 4.0 page 4.1
- CHAPTER 4
CHAPTER 4
CHAPTER 4
- DATA TYPES
DATA TYPES
DATA TYPES
- 4.1. Data Types and Structures Supported in PSL . . . . . 4.1
- 4.1.1. Data Types. . . . . . . . . . . . . . 4.1
- 4.1.2. Other Notational Conventions. . . . . . . . 4.4
- 4.1.3. Structures. . . . . . . . . . . . . . 4.4
- 4.2. Predicates Useful with Data Types . . . . . . . . 4.5
- 4.2.1. Functions for Testing Equality . . . . . . . 4.6
- 4.2.2. Predicates for Testing the Type of an Object . . 4.7
- 4.2.3. Boolean Functions . . . . . . . . . . . 4.8
- 4.3. Converting Data Types . . . . . . . . . . . . 4.9
- 4.1. Data Types and Structures Supported in PSL
4.1. Data Types and Structures Supported in PSL
4.1. Data Types and Structures Supported in PSL
- 4.1.1. Data Types
4.1.1. Data Types
4.1.1. Data Types
- Data objects in PSL are tagged with their type. This means that the type
- declarations required in many programming languages are not needed. Some
- functions are "generic" in that the result they return depends on the types
- ____ ___
of the arguments. A tagged PSL object is called an item, and has a tag
- ____
field (9 bits on the DEC-20, 5 bits on the VAX), an info field (18 bits on
- the DEC-20, 27 bits on the VAX), and possibly some bits for garbage
- ____
collection. The info field is either immediate data or an index or address
- __
into some other structure (such as the heap or id space). For the purposes
- ____
of input and output of items, an appropriate notation is used (see Chapter
- 12 for full details on syntax, restrictions, etc.). More explicit
- implementation details can be found in Chapters 20 and 21.
- The basic data types supported in PSL and a brief indication of their
- representations are described below.
- _______ _______
integer The integers are also called "fixed" numbers. The magnitude
- _______
of integers is essentially unrestricted if the "big number"
- _______
module, BIG, is loaded (LOAD BIG). The notation for integers
- is a sequence of digits in an appropriate radix (radix 10 is
- the default, which can be overridden by a radix prefix, such
- as 2#, 8#, 16# etc). There are three internal
- _______
representations of integers, chosen to suit the
- implementation:
- ____ ______ ____ ____
inum A signed number fitting into info. Inums do not
- require dynamic storage and are represented in the
Data Types 7 February 1983 PSL Manual
- page 4.2 section 4.1
- same form as machine integers. (19 bit [-2^18 ...
- 2^18 - 1] on the DEC-20, 28 bit on the VAX.)
- ______ ____ _______
fixnum A full-word signed integer, allocated in the heap.
- (36 bit on the DEC-20, fitting into a register; 32
- bit on the VAX.)
- [??? Do we need fixnums, and if yes how large
[??? Do we need fixnums, and if yes how large
[??? Do we need fixnums, and if yes how large
- ???]
???]
???]
- ______ _______
bignum A signed integer of arbitrary precision, allocated
- _______ ______
as a vector of integers. Bignums are currently not
- installed by default; to use them, do (LOAD BIG).
- _____ ________ _____
float A floating point number, allocated in the heap. The
- _____
precision of floats is determined solely by the
- implementation, and is 72-bit double precision on the DEC-20,
- _____
64-bit on the VAX. The notation for a float is a sequence of
- digits with the addition of a single floating point ( . ) and
- optional exponent (E <integer>). (No spaces may occur
- between the point and the digits). Radix 10 is used for
- representing the mantissa and the exponent of dty(floating
- point) numbers.
- __ __________ __ ____
id An identifier (or id) is an item whose info field points to a
- five-item structure containing the print name, property cell,
- value cell, function cell, and package cell. This structure
- __
is contained in the id space. The notation for an id is its
- print name, an alphanumeric character sequence starting with
- __
a letter. One always refers to a particular id by giving its
- print name. When presented with an appropriate print name,
- __
the PSL reader will find a unique id to associate with it.
- __
See Chapters 6 and 12 for more information on ids and their
- __
syntax. NIL and T are treated as special ids in PSL.
- ____ ____
pair A primitive two-item structure which has a left and right
- ___ ________
part. A notation called dot-notation is used, with the form:
- (<left-part> . <right-part>). The <left-part> is known as
- Car Cdr
Car Cdr
the Car portion and the <right-part> as the Cdr portion. The
- ____
parts may be any item. (Spaces are used to resolve ambiguity
- _____
with floats; see Chapter 12).
- ______ ____ _______
vector A primitive uniform structure of items; an integer index is
- used to access random values in the structure. The
- ______ ___ ____
individual elements of a vector may be any item. Access to
- ______
vectors is by means of functions for indexing, sub-vector
- extraction and concatenation, defined in Section 8.3. In the
- ______ ______
notation for vectors, the elements of a vector are surrounded
- ____ ____ ____
by square brackets: [item-0 item-1 ... item-n].
- ______ ______ ______
string A packed vector (or byte vector) of characters; the elements
- _______
are small integers representing the ASCII codes for the
PSL Manual 7 February 1983 Data Types
- section 4.1 page 4.3
- ____
characters (usually inums). The elements may be accessed by
- indexing, substring and concatenation functions, defined in
- ______
Chapter 8. String notation consists of a series of
- characters enclosed in double quotes, as in "THIS IS A
- STRING". A quote is included by doubling it, as in "HE SAID,
- ______
""LISP""". (Input strings may cross the end-of-line
- boundary, but a warning is given.) See !*EOLINSTRINGOK in
- chapter 12.
- ____ ______ ______ ____
word-vector A vector of machine-sized words, used to implement such
- ______ ______
things as fixnums, bignums, etc. The elements are not
- ____
considered to be items, and are not examined by the garbage
- collector.
- ____ ______
____ ______
____ ______
[??? The word-vector could be used to implement
[??? The word-vector could be used to implement
[??? The word-vector could be used to implement
- machine-code blocks on some machines. ???]
machine-code blocks on some machines. ???]
machine-code blocks on some machines. ???]
- ____ ______ ______ ____ ______
Byte-Vector A vector of bytes. Internally a byte-vector is the same as a
- ______
string, but it is printed differently as a vector of integers
- instead of characters.
- ________ ______
Halfword-Vector
- ______
A vector of machine-sized halfwords.
- ____ _______ ____
code-pointer This item is used to refer to the entry point of compiled
- _____ ______ ______
_____ ______ ______
_____ ______ ______
exprs fexprs macros
exprs fexprs macros
functions (exprs, fexprs, macros, etc.), permitting compiled
- functions to be renamed, passed around anonymously, etc. New
- Lap Fasl
____ _______ Lap Fasl
code-pointers are created by the loader (Lap,Fasl) and
- associated functions. They can be printed; the printing
- function prints the number of arguments expected as well as
- the entry point. The value appears in the convention of the
- implementation (#<Code a nnnn> on the DEC-20 and VAX, where a
- is the number of arguments and nnnn is the entry point).
- ___
___
___
[not
___ _______ [not
env-pointer A data type used to support a funarg capability. [not
- ___________ ___
___________ ___
___________ ___
implemented yet]
implemented yet]
implemented yet]
- 4.1.2. Other Notational Conventions
4.1.2. Other Notational Conventions
4.1.2. Other Notational Conventions
- Certain functional arguments can be any of a number of types. For
- convenience, we give these commonly used sets a name. We refer to these
- sets as "classes" of primitive data types. In addition to the types
- described above and the names for classes of types given below, we use the
- following conventions in the manual. {XXX, YYY} indicates that either data
- type XXX or data type YYY will do. {XXX}-{YYY} indicates that any object
- of type XXX can be used except those of type YYY; in this case, YYY is a
- _______ _____
subset of XXX. For example, {integer, float} indicates that either an
- _______ _____ ___ ______
integer or a float is acceptable; {any}-{vector} means any type except a
- ______
vector.
Data Types 7 February 1983 PSL Manual
- page 4.4 section 4.1
- ___ _ __________
any Any of the types given above. S-expression is another term
- ___
for any. All PSL entities have some value unless an error
- occurs during evaluation.
- ____ ___ ____
atom The class {any}-{pair}.
- _______
boolean The class of global variables {T, NIL}, or their respective
- values, {T, NIL}. (See Chapter 6.7).
- _________ _______
character Integers in the range of 0 to 127 representing ASCII
- character codes. These are distinct from single-character
- __
ids.
- ________ _______ _____ ______ ______ ____ _______
constant The class of {integer, float, string, vector, code-pointer}.
- Eval
________ Eval
A constant evaluates to itself (see the definition of Eval
- in Chapter 11).
- _____ _______
extra-boolean Any value in the system. Anything that is not NIL has the
- _______
boolean interpretation T.
- _____ __
ftype The class of definable function types. The set of ids
- ____ _____ _____ _____
____ _____ _____ _____
____ _____ _____ _____
expr fexpr macro nexpr
expr fexpr macro nexpr
{expr, fexpr, macro, nexpr}.
- _____ __________
The ftype is ONLY an attribute of identifiers, and is not
- ____ _______
associated with either executable code (code-pointers) or
- ______
lambda expressions.
- __ _______ _______
io-channel A small integer representing an io channel.
- ______ _______ _____
number The class of {integer, float}.
- _ ______ ______ ______ ______ ____ ______
x-vector Any kind of vector; i.e. a string, vector, word-vector, or
- ____
word.
- _________
Undefined An implementation-dependent value returned by some low-level
- functions; i.e. the user should not depend on this value.
- ____ ________
None Returned A notational convenience used to indicate control functions
- that do not return directly to the calling point, and hence
- Go
Go
do not return a value. (e.g. Go)
- 4.1.3. Structures
4.1.3. Structures
4.1.3. Structures
- ____ ____
Structures are entities created using pairs. Lists are structures very
- ____
commonly required as parameters to functions. If a list of homogeneous
- ____
entities is required by a function, this class is denoted by xxx-list, in
- ____
which xxx is the name of a class of primitives or structures. Thus a list
- __ __ ____ ____ _______ _______ ____
of ids is an id-list, a list of integers is an integer-list, and so on.
- ____ ____ ____ ___ ____
list A list is recursively defined as NIL or the pair (any . list). A
- ____ ________ ____
special notation called list-notation is used to represent lists.
- List-notation eliminates the extra parentheses and dots required
- by dot-notation, as illustrated below. List-notation and
- dot-notation may be mixed, as shown in the second and third
- examples. (See section 3.3.3.)
- ____________ _____________
dot-notation list-notation
- (a . (b . (c . NIL))) (a b c)
- (a . (b . c)) (a b . c)
- (a . ((b . c) . (d . NIL)))
PSL Manual 7 February 1983 Data Types
- section 4.1 page 4.5
- Note: () is an alternate input representation of NIL.
- _ ____ _ ____ ___________ ____
a-list An a-list, or association list, is a list in which each element
- Car
____ Car
is a pair, the Car part being a key associated with the value in
- Cdr
Cdr
the Cdr part.
- ____ ____
form A form is an S-expression (any) which is legally acceptable to
- Eval
Eval
Eval; that is, it is syntactically and semantically accepted by
- the interpreter or the compiler. (See Chapter 11 for more
- details.)
- ______
lambda A lambda expression must have the form (in list-notation):
- __ ____
(LAMBDA parameters . body). "Parameters" is an id-list of
- ____
formal parameters for "body", which is a form to be evaluated
- ProgN
ProgN
(note the implicit ProgN). The semantics of the evaluation are
- Eval
Eval
defined by the Eval function (see chapter 11).
- ________ ______ ____ _______
function A lambda, or a code-pointer. A function is always evaluated as
- Eval Spread
Eval Spread
Eval, Spread.
- 4.2. Predicates Useful with Data Types
4.2. Predicates Useful with Data Types
4.2. Predicates Useful with Data Types
- Most functions in this Section return T if the condition defined is met
- and NIL if it is not. Exceptions are noted. Defined are type-checking
- functions and elementary comparisons.
- 4.2.1. Functions for Testing Equality
4.2.1. Functions for Testing Equality
4.2.1. Functions for Testing Equality
- Functions for testing equality are listed below. For other functions
- comparing arithmetic values see Chapter 5.
- Eq
Eq _ ___ _ ___ _______ ____ ________ ____
(Eq U:any V:any): boolean open-compiled, expr
- _ _
Returns T if U points to the same object as V, i.e. if they are
- Eq
____ Eq ___
identical items. Eq is not a reliable comparison between numeric
- arguments. This function should only be used in special
- Equal
Equal
circumstances. Normally, equality should be tested with Equal,
- described below.
- EqN
EqN _ ___ _ ___ _______ ____
(EqN U:any V:any): boolean expr
- Eq
_ _ Eq _ _
Returns T if U and V are Eq or if U and V are numbers and have
- the same value and type.
- [??? Should numbers of different type be EqN? e.g. 0 vs. 0.0
[??? Should numbers of different type be EqN? e.g. 0 vs. 0.0
[??? Should numbers of different type be EqN? e.g. 0 vs. 0.0
- ???]
???]
???]
Data Types 7 February 1983 PSL Manual
- page 4.6 section 4.2
- Equal
Equal _ ___ _ ___ _______ ____
(Equal U:any V:any): boolean expr
- _ _ ____
Returns T if U and V are the same. Pairs are compared
- ______
recursively to the bottom levels of their trees. Vectors must
- Equal
Equal
have identical dimensions and Equal values in all positions.
- ______
Strings must have identical characters, i.e. all characters must
- Eq
____ _______ Eq
be of the same case. Code-pointers must have Eq values. Other
- Eqn
____ Eqn
atoms must be Eqn equal. A usually valid heuristic is that if
- Print
Print
two objects look the same if printed with the function Print,
- Equal Equal
Equal ____ Equal
they are Equal. If one argument is known to be an atom, Equal is
- Eq
Eq
open-compiled as Eq.
- For example, if
- (Setq X '(A B C)) and (Setq Y X) have been executed, then
- (EQ X Y) is T
- (EQ X '(A B C)) is NIL
- (EQUAL X '(A B C)) is T
- (EQ 1 1) is T
- (EQ 1.0 1.0) is NIL
- (EQN 1.0 1.0) is T
- (EQN 1 1.0) is NIL
- (EQUAL 0 0.0) is NIL
- Neq
Neq _ ___ _ ___ _______ _____
(Neq U:any V:any): boolean macro
- Not Equal
Not Equal _ _
(Not (Equal U V)).
- Ne
Ne _ ___ _ ___ _______ ____ ________ ____
(Ne U:any V:any): boolean open-compiled, expr
- Not Eq
Not Eq _ _
(Not (Eq U V)).
- EqStr
EqStr _ ___ _ ___ _______ ____
(EqStr U:any V:any): boolean expr
- ______
Compare two strings, for exact (Case sensitive) equality. For
- case-INsensitive equality one must load the STRINGS module (see
- EqStr Eq
EqStr _ _ Eq _ _
Section 8.7). EqStr returns T if U and V are Eq or if U and V
- are equal strings.
- EqCar
EqCar _ ___ _ ___ _______ ____
(EqCar U:any V:any): boolean expr
- Eq Car
Eq Car _ _
Tests whether (Eq (Car U) V)). If the first argument is not a
- EqCar
EqCar
pair, EqCar returns NIL.
PSL Manual 7 February 1983 Data Types
- section 4.2 page 4.7
- 4.2.2. Predicates for Testing the Type of an Object
4.2.2. Predicates for Testing the Type of an Object
4.2.2. Predicates for Testing the Type of an Object
- Atom
Atom _ ___ _______ ____ ________ ____
(Atom U:any): boolean open-compiled, expr
- _ ____
Returns T if U is not a pair.
- CodeP
CodeP _ ___ _______ ____ ________ ____
(CodeP U:any): boolean open-compiled, expr
- _ ____ _______
Returns T if U is a code-pointer.
- ConstantP
ConstantP _ ___ _______ ____
(ConstantP U:any): boolean expr
- _ ________ ____ __
Returns T if U is a constant (that is, neither a pair nor an id).
- ______ ________
Note that vectors are considered constants.
- [??? Should Eval U Eq U if U is a constant? ???]
[??? Should Eval U Eq U if U is a constant? ???]
[??? Should Eval U Eq U if U is a constant? ???]
- FixP
FixP _ ___ _______ ____ ________ ____
(FixP U:any): boolean open-compiled, expr
- _ _______
Returns T if U is an integer. If BIG is loaded, this function
- also returns T for bignums.
- FloatP
FloatP _ ___ _______ ____ ________ ____
(FloatP U:any): boolean open-compiled, expr
- _ _____
Returns T if U is a float.
- IdP
IdP _ ___ _______ ____ ________ ____
(IdP U:any): boolean open-compiled, expr
- _ __
Returns T if U is an id.
- Null
Null _ ___ _______ ____ ________ ____
(Null U:any): boolean open-compiled, expr
- Not
_ Not
Returns T if U is NIL. This is exactly the same function as Not,
- defined in Section 4.2.3. Both are available solely to increase
- readability.
- NumberP
NumberP _ ___ _______ ____ ________ ____
(NumberP U:any): boolean open-compiled, expr
- _ ______ _______ _____
Returns T if U is a number (integer or float).
Data Types 7 February 1983 PSL Manual
- page 4.8 section 4.2
- PairP
PairP _ ___ _______ ____ ________ ____
(PairP U:any): boolean open-compiled, expr
- _ ____
Returns T if U is a pair.
- StringP
StringP _ ___ _______ ____ ________ ____
(StringP U:any): boolean open-compiled, expr
- _ ______
Returns T if U is a string.
- VectorP
VectorP _ ___ _______ ____ ________ ____
(VectorP U:any): boolean open-compiled, expr
- _ ______
Returns T if U is a vector.
- 4.2.3. Boolean Functions
4.2.3. Boolean Functions
4.2.3. Boolean Functions
- Boolean functions return NIL for "false"; anything non-NIL is taken to be
- true, although a conventional way of representing truth is as T. Note that
- T always evaluates to itself. NIL may also be represented as '(). The
- And Or Not
And Or Not
Boolean functions And, Or, and Not can be applied to any LISP type, and are
- And Or
And Or
not bitwise functions. And and Or are frequently used in LISP as control
- structures as well as Boolean connectives (see Section 9.2). For example,
- the following two constructs will give the same result:
- (COND ((AND A B C) D))
- (AND A B C D)
- Since there is no specific Boolean type in LISP and since every LISP
- expression has a value which may be used freely in conditionals, there is
- no hard and fast distinction between an arbitrary function and a Boolean
- function. However, the three functions presented here are by far the most
- useful in constructing more complex tests from simple predicates.
- Not
Not _ ___ _______ ____ ________ ____
(Not U:any): boolean open-compiled, expr
- _
Returns T if U is NIL. This is exactly the same function as
- Null
Null
Null, defined in Section 4.2.2. Both are available solely to
- increase readability.
- And
And _ ____ _____ _______ ____ ________ _____
(And [U:form]): extra-boolean open-compiled, fexpr
- And
And _
And evaluates each U until a value of NIL is found or the end of
- ____
the list is encountered. If a non-NIL value is the last value,
- And
And
it is returned; otherwise NIL is returned. Note that And called
- with zero arguments returns T.
PSL Manual 7 February 1983 Data Types
- section 4.2 page 4.9
- Or
Or _ ____ _____ _______ ____ ________ _____
(Or [U:form]): extra-boolean open-compiled, fexpr
- _
U is any number of expressions which are evaluated in order of
- their appearance. If one is found to be non-NIL, it is returned
- Or
Or
as the value of Or. If all are NIL, NIL is returned. Note that
- Or
Or
if Or is called with zero arguments, it returns NIL.
- 4.3. Converting Data Types
4.3. Converting Data Types
4.3. Converting Data Types
- The following functions are used in converting data items from one type
- to another. They are grouped according to the type returned. Numeric
- Fix Float
Fix Float
types may be converted using functions such as Fix and Float, described in
- Section 5.2.
- Intern
Intern _ __ ______ __ ____
(Intern U:{id,string}): id expr
- Intern
______ __ Intern __ ____ _____
Converts string to id. Intern searches the id-hash-table (or
- __ ____ _____ __
current id-hash-table if the package system is loaded) for an id
- _ __
with the same print name as U and returns the id on the
- __ ____ _____
id-hash-table if a match is found. (See Chapter 6 for a
- __ ____ _____
discussion of the id-hash-table. Any properties and GLOBAL values
- _ _
associated with the uninterned U are lost. If U does not match
- _
any entry, a new one is created and returned. If U has more than
- the maximum number of characters permitted by the implementation
- (???), an error is signalled:
- ***** Too many characters to INTERN
- [??? Rewrite for package system; include search path, global,
[??? Rewrite for package system; include search path, global,
[??? Rewrite for package system; include search path, global,
- local, intern, etc. See Chapter 6. ???]
local, intern, etc. See Chapter 6. ???]
local, intern, etc. See Chapter 6. ???]
- The maximum number of characters in any token is 5000.
- NewId
NewId _ ______ __ ____
(NewId S:string): id expr
- __ _____ ____
Allocates a new uninterned id, and sets its print-name to the
- ______ _ ______ ___
string S. The string is not copied.
- (Setq New (NewId "NEWONE")) returns NEWONE
- __
Note that if one refers directly to the id NEWONE, it will become
- interned and a new position in the id space will be allocated to
- __ __
it. One has to refer to the new id indirectly through the id
- New.
Data Types 7 February 1983 PSL Manual
- page 4.10 section 4.3
- Int2Id
Int2Id _ _______ __ ____
(Int2Id I:integer): id expr
- _______ __ _ __
Converts an integer to an id; this refers to the I'th id in the
- Int2Id
__ Int2Id
id space. Since 0 ... 127 correspond to ASCII characters, Int2Id
- with an argument in this range converts an ASCII code to the
- __
corresponding single character id.
- (Int2Id 250) returns QUOTIENT
- Id2Int
Id2Int _ __ _______ ____
(Id2Int D:id): integer expr
- __ _ _______
Returns the id space position of D as a LISP integer.
- (Id2Int 'String) returns 182
- Id2String
Id2String _ __ ______ ____
(Id2String D:id): string expr
- Id2String Print
__ Id2String Print
Get name from id space. Id2String returns the Print name of its
- ______
argument as a string. This is not a copy, so destructive
- CopyString
CopyString
operations should not be performed on the result. See CopyString
- in Chapter 8.
- [??? Should it be a copy? ???]
[??? Should it be a copy? ???]
[??? Should it be a copy? ???]
- (Id2String 'String) returns "STRING"
- String2List
String2List _ ______ ____ ____ ____
(String2List S:string): inum-list expr
- Length Add1 Size
____ Length Add1 Size _
Creates a list of Length (Add1 (Size S)), converting the ASCII
- _______
characters into small integers.
- [??? What of 0/1 base for length vs length -1. What of the
[??? What of 0/1 base for length vs length -1. What of the
[??? What of 0/1 base for length vs length -1. What of the
- NUL char added ???]
NUL char added ???]
NUL char added ???]
- (String2List "STRING") returns (83 84 82 73 78 71)
- List2String
List2String _ ____ ____ ______ ____
(List2String L:inum-list): string expr
- Size
______ Size _ ____
Allocates a string of the same Size as L, and converts inums to
- ____
characters according to their ASCII code. The inums must be in
- the range 0 ... 127.
- [??? Check if 0 ... 127, and signal error ???]
[??? Check if 0 ... 127, and signal error ???]
[??? Check if 0 ... 127, and signal error ???]
- (List2String '(83 84 82 73 78 71)) returns "STRING"
PSL Manual 7 February 1983 Data Types
- section 4.3 page 4.11
- String
String _ ____ ______ _____
(String [I:inum]): string nexpr
- ______ ____
Creates and returns a string containing all the inums given.
- (String 83 84 82 73 78 71) returns "STRING"
- Vector
Vector _ ___ ______ _____
(Vector [U:any]): vector nexpr
- ______ _
Creates and returns a vector containing all the Us given.
- (Setq X (Vector 83 84 82 73 78 71)) returns
- [83 84 82 73 78 71]
- Vector2String
Vector2String _ ______ ______ ____
(Vector2String V:vector): string expr
- _______ ______ ______
Pack the small integers in the vector into a string of the same
- Size
Size _______
Size, using the integers as ASCII values.
- [??? check for integer in range 0 ... 127 ???]
[??? check for integer in range 0 ... 127 ???]
[??? check for integer in range 0 ... 127 ???]
- (Vector2String X) where X is defined as above returns
- "STRING"
- String2Vector
String2Vector _ ______ ______ ____
(String2Vector S:string): vector expr
- Size
______ ______ Size
Unpack the string into a vector of the same Size. The elements
- ______
of the vector are small integers, representing the ASCII values
- _
of the characters in S.
- (String2Vector "VECTOR") returns [V E C T O R]
- Vector2List
Vector2List _ ______ ____ ____
(Vector2List V:vector): list expr
- Size Length Upbv
____ Size _ Length Upbv _
Create a list of the same Size as V (i.e. of Length Upbv(V)+1),
- Upbv
Upbv _
copying the elements in order 0, 1, ..., Upbv(V).
- (Vector2List [L I S T]) returns (L I S T)
- List2Vector
List2Vector _ ____ ______ ____
(List2Vector L:list): vector expr
- Size
____ ______ Size
Copy the elements of the list into a vector of the same Size.
- (List2Vector '(V E C T O R)) returns [V E C T O R]
|