23 ;;Quote: a data type is a set of operations specifying an interpretation of values of a universal value space
|
23 ;;Quote: Scott's universal domain is both typeless and contains an infinite hierarchy of types
|
23 ;;Quote: Scott found universal domains that contained their own function spaces
|
24 ;;Quote: type retracts are themselves values of the universal domain
|
24+;;Quote: a type retract is a continuous function which is the identity over its range (a proper subspace of D)
|
24+;;Quote: a data type of the universal domain is the type retract for a proper subdomain of the universal domain
|
24 ;;Quote: computer memory is typeless; the same sequence of bits can be logical values, integers, code, etc.
|
24 ;;Quote: Scott's universal domain reflects the typelessness of computer memory
|
24 ;;Quote: in Russell, the meaning of a data type is the meaning of its operations over the universal domain of bit strings
|
24+;;Quote: in Algol languages, data types are sets of operations with an interpretation of values
|
24 ;;Quote: a type retract defines the interpretation (value) of each element in the universal domain
|
24 ;;Quote: a type retract f is the identity on its range (its set of values over the universal domain)
|
25 ;;Quote: composing functions for assign and access yields a type retract whose range is all legal values for that type
|
25 ;;Quote: can convert a type retract for a set of operations into one for a set of values; e.g., integers as 32-bit values
|
25 ;;Quote: a type parameter stands for a set of operations used within the procedure's body; similar to procedure parameters
|
25 ;;Quote: in polymorphic procedures, can declare a set of operations required of a data type parameter
|
25+;;Quote: syntax for the body of a polymorphic procedure is the same as for a nonpolymorphic procedure
|
26 ;;Quote: within a polymorphic procedure, a type parameter is a type with a given set of operations
|
26 ;;Quote: type checking in Russell guarantees representation independent semantics
|
26+;;Quote: data types interpret values of a universal space where any operation can apply to any value
|
26 ;;Quote: in Russell, polymorphic procedures can be recursive or procedure arguments
|
27 ;;Quote: two type attributes are compatible if they are the same identifier (with compatible type arguments)
|
28 ;;Quote: in Russell, an exports-list defines what is representation and what is visible outside; same as a with-list
|
28 ;;Quote: use a polymorphic procedure to manipulate an object without accessing it, e.g., for sorting
|
28 ;;Quote: instead of an argument having rights to use a function, Russell requires the appropriate field
|
29 ;;Quote: type-compatibility in Russell is independent of the type's definition
|
29 ;;Quote: a type capsule with an export-list is equivalent to exporting everything and used in procedures with a type parameter using the same with-list
|
29 ;;Quote: type parameters are needed for a general, type definition facility
|
30 ;;Quote: the less needed to explain a language feature, the better its design
|