Changes between Version 1 and Version 2 of DSSSLVsScheme
 Timestamp:
 04/25/10 00:33:49 (7 years ago)
Legend:
 Unmodified
 Added
 Removed
 Modified

DSSSLVsScheme
v1 v2 19 19 * You may not redefine a defined identifier. 20 20 * Improper lambdalists are not allowed. 21 * A definition may refer to identifiers that are defined in later definitions. 21 * A definition may refer to identifiers that are defined in later definitions, not only within `lambda`expressions, but anywhere. 22 * Internal definitions are equivalent to `letrec`. 22 23 * You may redefine a builtin identifier such as `car`, and such redefinitions are pervasive. 23 24 * `Case` uses `equal?` to match keys, since `eqv?` does not exist. 24 25 * Numbers are restricted to exact integers and inexact rationals. 25 * Exact integers must include the range 2^31^1 to 2^31^1 .26 * Exact integers must include the range 2^31^1 to 2^31^1 and may be larger. 26 27 * `#i` and `#e` syntax are not supported. 27 28 28 29 DSSSL extensions: 29 * Complex lambdalists are provided, with flags `#!optional, #!rest, #!key`.30 * Complex `lambda`lists are provided, with flags `#!optional, #!rest, #!key`. These three are selfdefining named constants when used outside `lambda`lists. 30 31 * Keywords are runtime objects, with procedures `keyword?, keyword>string, string>keyword`. 31 * Quantities are a superset of numbers: the primitive unit is meters, written `m` (e.g. `1m` for 1 meter). 32 * Quantities are a superset of numbers: the primitive unit is meters, written `m` (e.g. `1m` for 1 meter). Standard derived units are `cm mm in pt pica`, and new derived units (but not new primitive units) may be added with `defineunit`. 32 33 * Numeric literals with a decimal point, an exponent, or a unit are inexact; all others are exact. 33 * The procedures `exact? inexact? = < > <= >= zero? positive? negative? odd? even? max min +  & / abs atan` (with two arguments) `sqrt` apply to quantities as well as numbers. 34 * `defineunit` allows the definition of additional units derived from meters (e.g. `cm`), but no new primitive units can be created. 34 * The procedures `exact?, inexact?, =, <, >, <=, >=, zero?, positive?, negative?, odd?, even?, max, min, +, , *, /, abs atan` (with two arguments), `sqrt` apply to quantities as well as numbers. 35 35 * `quantity>number` strips the unit from a quantity. 36 * `formatnumber` converts a number to a string containing ordinary numbers, numbers with leading zeros, letters, or Roman numerals. 36 * `formatnumber` converts a number to a string containing ordinary numbers, numbers with leading zeros, letters, or Roman numerals. `formatnumberlist` applies to a 37 37 * Characters have (immutable) property lists, where the properties are keywords: one property is `numericequiv:`. 38 38 * Language objects specify collation and case conversion; procedures are `language?, currentlanguage, withlanguage`. 39 * Date and time procedures are provided: `time, time>string, time<?, time>?, time<=?, time>=` (the last four apply to ISO 8601 timestamp strings). 39 * NonScheme procedures can be accessed with `externalprocedure`, which returns a corresponding Scheme procedure, which should be pure functional. 40 * Date and time procedures are provided: `time` returns the current time since the 1970 Epoch as an integer; `time>string, time<?, time>?, time<=?, time>=` generate and compare ISO 8601 timestamp strings. 40 41 * `error` signals an error; it has one argument, a string.