2 ;;Quote: Russell is representation independent, i.e., different value spaces exhibit the same behavior
|
4 ;;Quote: in Russell, a parameter can be anything with a signature, e.g., values, procedures, and types
|
4+;;Quote: the signature of a Russell procedure is the list of signatures of its parameters
|
5 ;;Quote: in Russell can also define infix and suffix functions
|
5+;;Quote: Russell can overload existing operators if they have different argument signatures
|
5 ;;Quote: a type signature is its name and the signatures of all operations that use that type
|
5+;;Quote: a data type is a set of operations
|
5 ;;Quote: use enumerated data type to define a new set of constants
|
QuoteRef: demeA3_1979 ;;5 "'Ref, which when applied to a type T, yields a type with a single constant 'nil and no defined ordering.
|
5 ;;Quote: a union type defines operations for projection, injection, and inspection
|
QuoteRef: demeA3_1979 ;;6 "Statements are the operational units of the [Russell] language. [basic procedure calls and compound control statements
|
6 ;;Quote: a Russell capsule defines a type as a collection of operations, types, schemes, and fields
|
6 ;;Quote: names of Russell fields are selectors, i.e., a function that produces the field's value
|
6 ;;Quote: a scheme is a parameterized type that yields procedures, functions, types, and a signature
|
6+;;Quote: a scheme is a parameterized operation definition that defines a new abstract data type
|
14 ;;Quote: a constant in Russell is any value-producing function of no arguments; must produce constant results
|
17 ;;Quote: weak form of assignment is a procedure that takes two var arguments; strong form is var and val arguments
|
19 ;;Quote: a type in Russell is a set of procedures, functions, types, and schemes chosen by apply selection
|
QuoteRef: demeA3_1979 ;;21 "The form [Var[val] Denotation . Id is treated as shorthand for T $ Id ( [Var/Val]Denotation) where T is the type of the given denotation
|
23 ;;Quote: a constant denotation as an argument is same as call-by-name; not evaluated until applied
|
26 ;;Quote: argument and parameter signatures match if identical after transformation using renaming, reordering, and deletion
|
28 ;;Quote: type checking in Russell consists of matching argument signatures with parameter signatures
|
30 ;;Quote: can modify a type by adding, renaming, or deleting operations
|
32 ;;Quote: can redefine operations in terms of previous values since evaluation occurs before binding values to names
|
QuoteRef: demeA3_1979 ;;42 "Several builtin typeschemes are provided in Russell. These include arrays, references, subranges, unions and files.
|
45 ;;Quote: a subrange has the same signature as the enumeration plus operations for converting between the two
|
QuoteRef: demeA3_1979 ;;47 The file operation "Next allows "looking ahead" in the file without "using up" the next value by performing a Read.
|
47 ;;Quote: by requiring strong assignment (var<-val) for files, files can not use reference values
|
49 ;;Quote: prevent inadvertent aliasing by not importing var variables with local var declarations
|
53 ;;Quote: Russell allows var to val coercion, e.g. in an arithmetic expression
|
66 ;;Quote: changing an array signature to one for sparse arrays is either exactly equivalent or type-incorrect
|