@@ -214,40 +214,36 @@ Fibonacci(number):
214
214
- Return {Fibonacci(previousNumber)} + {Fibonacci(previousPreviousNumber)}.
215
215
216
216
Note: Algorithms described in this document are written to be easy to
217
- understand. Implementers are encouraged to include equivalent but optimized
218
- implementations.
217
+ understand. Implementers are encouraged to include observably equivalent but
218
+ optimized implementations.
219
219
220
220
## Data Collections
221
221
222
- A data collection is a finite, iterable aggregation of elements whose iteration
223
- order is not necessarily stable. This specification describes the semantic
224
- properties of data collections using types like "list", "set" and "map". These
225
- describe observable data collections, such as the result of applying a grammar
226
- and the inputs and outputs of algorithms. They also describe unobservable data
227
- collections such as temporary data internal to an algorithm. Each data
228
- collection type defines the operations available, and whether values are unique
229
- or ordered.
222
+ Algorithms within this specification refer to abstract data collection types to
223
+ express normative structural, uniqueness, and ordering requirements. Temporary
224
+ data collections internal to an algorithm use these types to best describe
225
+ expected behavior, but implementers are encouraged to provide observably
226
+ equivalent but optimized implementations. Implementations may use any data
227
+ structure as long as the expected requirements are met.
230
228
231
229
** List**
232
230
233
- :: The term _ list_ describes a sequence of zero or more values, which may
234
- contain duplicates. Currently, all lists in this specification are ordered, but
235
- for clarity the term "ordered list" may be used when an order is semantically
236
- important.
231
+ :: A _ list_ is an ordered collection of values which may contain duplicates. A
232
+ value added to a list is ordered after existing values.
237
233
238
234
** Set**
239
235
240
- :: The term _ set_ describes a collection of zero or more values, which may not
241
- contain duplicates. Each value is considered a "member" of the set. A set is
242
- unordered unless explicitly stated otherwise (as an "ordered set"). For clarity,
243
- the term "unordered set" may be used when the lack of an order is semantically
244
- important .
236
+ :: A _ set_ is a collection of values which must not contain duplicates.
237
+
238
+ :: An _ ordered set _ is a set which has a defined order. A value added to an
239
+ ordered set, which does not already contain that value, is ordered after
240
+ existing values .
245
241
246
242
** Map**
247
243
248
- :: The term _ map_ describes a collection where each element is a pair (called an
249
- " entry") consisting of a key and a value. Keys are unique: no two entries with
250
- the same key may exist in the same map, but values may repeat. A map is
251
- unordered unless explicitly stated otherwise (as an "ordered map"). For clarity,
252
- the term "unordered map" may be used when the lack of an order is semantically
253
- important .
244
+ :: A _ map_ is a collection of entries, each of which has a key and value. Each
245
+ entry has a unique key, and can be directly referenced by that key.
246
+
247
+ :: An _ ordered map _ is a map which has a defined order. An entry added to an
248
+ ordered map, which does not have an entry with that key, is ordered after
249
+ existing values .
0 commit comments