[r6rs-discuss] [Formal] Enumeration types should be reified

From: John Cowan <cowan>
Date: Tue, 5 Jun 2007 18:18:46 -0400

---
This message is a formal comment which was submitted to formal-comment at r6rs.org, following the requirements described at: http://www.r6rs.org/process.html
---
Submitter: John Cowan
Email address: cowan at ccil.org
Issue type: Defect
Priority: Major
Component:  Enumerations
Report version: 5.93
Summary: Enumeration types should be reified
Currently, some enumeration procedures will work on two enumeration
sets if they have the same underlying universe (considered as a list of
symbols), but union, intersection, and difference depend on sharing the
same enumeration types.  However, there is no way to tell if enumeration
sets are of the same type except trying to union them and catching the
&assertion exception.  This comment proposes that the enumeration type
be made available to Scheme programmers.
Specifically, make-enumeration should return a unique opaque
enumeration-type object.  This would then be accepted by
enum-set-{universe, indexer, constructor} and the procedures returned
by the latter two.  Each enumeration-type object would be distinct in
the sense of eqv? from any other (so eqv? would need a new reference to
library section 14).
A new procedure enumeration-type would, given an enumeration set, return
the corresponding enumeration-type object.  While this design requires
one extra procedure, it clearly separates enumeration sets in their role
as sets from their role as prototypes.
-- 
John Cowan    cowan at ccil.org    http://ccil.org/~cowan
Objective consideration of contemporary phenomena compel the conclusion
that optimum or inadequate performance in the trend of competitive
activities exhibits no tendency to be commensurate with innate capacity,
but that a considerable element of the unpredictable must invariably be
taken into account. --Ecclesiastes 9:11, Orwell/Brown version
Received on Tue Jun 05 2007 - 18:18:46 UTC

This archive was generated by hypermail 2.3.0 : Wed Oct 23 2024 - 09:15:01 UTC