Reasons for withdrawal
scgmille@xxxxxx
(28 Oct 2003 20:35 UTC)
|
Re: Reasons for withdrawal
Tom Lord
(28 Oct 2003 21:24 UTC)
|
RE: Reasons for withdrawal
Anton van Straaten
(28 Oct 2003 22:05 UTC)
|
Re: Reasons for withdrawal
Bradd W. Szonye
(28 Oct 2003 22:36 UTC)
|
Re: Reasons for withdrawal
scgmille@xxxxxx
(28 Oct 2003 22:44 UTC)
|
Re: Reasons for withdrawal
Bradd W. Szonye
(28 Oct 2003 23:22 UTC)
|
Re: Reasons for withdrawal
Tom Lord
(29 Oct 2003 02:50 UTC)
|
Re: Reasons for withdrawal
scgmille@xxxxxx
(29 Oct 2003 03:19 UTC)
|
Re: Reasons for withdrawal
Tom Lord
(29 Oct 2003 03:31 UTC)
|
Re: Reasons for withdrawal
scgmille@xxxxxx
(29 Oct 2003 03:38 UTC)
|
Re: Reasons for withdrawal
Bradd W. Szonye
(29 Oct 2003 04:36 UTC)
|
Re: Reasons for withdrawal
scgmille@xxxxxx
(29 Oct 2003 05:02 UTC)
|
Re: Reasons for withdrawal
Bradd W. Szonye
(29 Oct 2003 05:32 UTC)
|
Re: Reasons for withdrawal
Taylor Campbell
(28 Oct 2003 22:56 UTC)
|
Re: Reasons for withdrawal
Taylor Campbell
(28 Oct 2003 23:06 UTC)
|
Re: Reasons for withdrawal
Bradd W. Szonye
(28 Oct 2003 23:16 UTC)
|
Re: Reasons for withdrawal
scgmille@xxxxxx
(28 Oct 2003 23:28 UTC)
|
Re: Reasons for withdrawal
Bradd W. Szonye
(28 Oct 2003 23:42 UTC)
|
Re: Reasons for withdrawal
scgmille@xxxxxx
(29 Oct 2003 00:13 UTC)
|
Re: Reasons for withdrawal
Bradd W. Szonye
(29 Oct 2003 01:00 UTC)
|
Re: Reasons for withdrawal
scgmille@xxxxxx
(29 Oct 2003 01:41 UTC)
|
Re: Reasons for withdrawal
Tom Lord
(29 Oct 2003 03:03 UTC)
|
RE: Reasons for withdrawal
Anton van Straaten
(29 Oct 2003 05:31 UTC)
|
Re: Reasons for withdrawal
Bradd W. Szonye
(29 Oct 2003 05:54 UTC)
|
RE: Reasons for withdrawal
Anton van Straaten
(29 Oct 2003 06:40 UTC)
|
Re: Reasons for withdrawal
Bradd W. Szonye
(29 Oct 2003 06:44 UTC)
|
RE: Reasons for withdrawal
Anton van Straaten
(29 Oct 2003 07:31 UTC)
|
Re: Reasons for withdrawal
Bradd W. Szonye
(29 Oct 2003 07:34 UTC)
|
Re: Reasons for withdrawal
Thien-Thi Nguyen
(29 Oct 2003 14:08 UTC)
|
Re: Reasons for withdrawal
Bradd W. Szonye
(28 Oct 2003 21:28 UTC)
|
Re: Reasons for withdrawal
scgmille@xxxxxx
(28 Oct 2003 22:02 UTC)
|
Re: Reasons for withdrawal
Bradd W. Szonye
(28 Oct 2003 22:22 UTC)
|
Re: Reasons for withdrawal
Jim White
(28 Oct 2003 22:15 UTC)
|
Re: Reasons for withdrawal
Shiro Kawai
(29 Oct 2003 01:25 UTC)
|
Re: Reasons for withdrawal
scgmille@xxxxxx
(29 Oct 2003 01:44 UTC)
|
Re: Reasons for withdrawal
Bradd W. Szonye
(29 Oct 2003 04:10 UTC)
|
Re: Reasons for withdrawal
scgmille@xxxxxx
(29 Oct 2003 04:53 UTC)
|
Re: Reasons for withdrawal
Bradd W. Szonye
(29 Oct 2003 05:10 UTC)
|
Re: Reasons for withdrawal
scgmille@xxxxxx
(29 Oct 2003 05:17 UTC)
|
Re: Reasons for withdrawal
Bradd W. Szonye
(29 Oct 2003 05:31 UTC)
|
Re: Reasons for withdrawal
scgmille@xxxxxx
(29 Oct 2003 01:49 UTC)
|
API conflicts (Was: Re: Reasons for withdrawal)
Shiro Kawai
(29 Oct 2003 05:48 UTC)
|
Re: API conflicts
Shiro Kawai
(29 Oct 2003 06:03 UTC)
|
Re: API conflicts
scgmille@xxxxxx
(29 Oct 2003 17:40 UTC)
|
Re: API conflicts (Was: Re: Reasons for withdrawal)
Bradd W. Szonye
(29 Oct 2003 06:03 UTC)
|
Re: API conflicts (Was: Re: Reasons for withdrawal)
scgmille@xxxxxx
(29 Oct 2003 14:19 UTC)
|
Re: API conflicts
Shiro Kawai
(29 Oct 2003 22:25 UTC)
|
Re: API conflicts
scgmille@xxxxxx
(29 Oct 2003 22:41 UTC)
|
Re: API conflicts
Taylor Campbell
(29 Oct 2003 23:58 UTC)
|
Re: API conflicts (Was: Re: Reasons for withdrawal)
Taylor Campbell
(29 Oct 2003 21:40 UTC)
|
A possible solution? bear (29 Oct 2003 22:59 UTC)
|
RE: A possible solution?
Anton van Straaten
(30 Oct 2003 07:40 UTC)
|
Re: A possible solution?
Bradd W. Szonye
(30 Oct 2003 10:07 UTC)
|
RE: A possible solution?
bear
(30 Oct 2003 15:13 UTC)
|
Re: A possible solution?
scgmille@xxxxxx
(30 Oct 2003 15:20 UTC)
|
Re: A possible solution?
Bradd W. Szonye
(30 Oct 2003 15:27 UTC)
|
Re: A possible solution?
scgmille@xxxxxx
(30 Oct 2003 15:39 UTC)
|
Re: A possible solution?
Bradd W. Szonye
(30 Oct 2003 15:43 UTC)
|
Re: A possible solution?
scgmille@xxxxxx
(30 Oct 2003 16:11 UTC)
|
Re: A possible solution?
bear
(30 Oct 2003 17:02 UTC)
|
Re: A possible solution?
Tom Lord
(30 Oct 2003 19:58 UTC)
|
Re: A possible solution?
scgmille@xxxxxx
(30 Oct 2003 20:15 UTC)
|
Re: A possible solution?
bear
(30 Oct 2003 20:53 UTC)
|
Re: A possible solution?
scgmille@xxxxxx
(30 Oct 2003 21:07 UTC)
|
Re: A possible solution?
Taylor Campbell
(30 Oct 2003 21:08 UTC)
|
Re: A possible solution?
Bradd W. Szonye
(30 Oct 2003 21:11 UTC)
|
Re: A possible solution?
scgmille@xxxxxx
(30 Oct 2003 21:17 UTC)
|
Re: A possible solution?
bear
(30 Oct 2003 23:11 UTC)
|
Re: A possible solution?
Alex Shinn
(31 Oct 2003 03:03 UTC)
|
Re: API conflicts
Shiro Kawai
(29 Oct 2003 23:19 UTC)
|
Re: API conflicts
scgmille@xxxxxx
(30 Oct 2003 00:26 UTC)
|
Re: API conflicts
Bradd W. Szonye
(30 Oct 2003 05:32 UTC)
|
Re: API conflicts
bear
(30 Oct 2003 06:22 UTC)
|
Re: API conflicts
Bradd W. Szonye
(30 Oct 2003 06:23 UTC)
|
Re: API conflicts
scgmille@xxxxxx
(30 Oct 2003 13:54 UTC)
|
Re: API conflicts
Bradd W. Szonye
(30 Oct 2003 14:01 UTC)
|
Re: API conflicts
scgmille@xxxxxx
(30 Oct 2003 14:16 UTC)
|
Re: API conflicts
Bradd W. Szonye
(30 Oct 2003 14:29 UTC)
|
Re: API conflicts
scgmille@xxxxxx
(30 Oct 2003 14:58 UTC)
|
Re: API conflicts
Bradd W. Szonye
(30 Oct 2003 15:22 UTC)
|
Re: Reasons for withdrawal
Tom Lord
(29 Oct 2003 01:50 UTC)
|
Re: Reasons for withdrawal
Alex Shinn
(29 Oct 2003 03:06 UTC)
|
Re: Reasons for withdrawal
scgmille@xxxxxx
(29 Oct 2003 03:18 UTC)
|
Re: Reasons for withdrawal
Tom Lord
(29 Oct 2003 03:29 UTC)
|
Re: Reasons for withdrawal
scgmille@xxxxxx
(29 Oct 2003 03:37 UTC)
|
Re: Reasons for withdrawal
Alex Shinn
(29 Oct 2003 06:16 UTC)
|
Re: Reasons for withdrawal
scgmille@xxxxxx
(29 Oct 2003 14:25 UTC)
|
Re: Reasons for withdrawal
Alex Shinn
(30 Oct 2003 02:19 UTC)
|
Re: Reasons for withdrawal
scgmille@xxxxxx
(30 Oct 2003 04:42 UTC)
|
Re: Reasons for withdrawal
Alex Shinn
(30 Oct 2003 06:22 UTC)
|
I've been thinking about this; yesterday I quit brooding about how much the situation annoys me and started trying to think constructively. So... I've got a suggestion. I'm going to propose a change that might meet your goals here without running afoul of the issues that seem to be making problems. I do dispatch and OO programming all the time in scheme, and I don't use any of the popular "OO" frameworks because it's so simple to do OO programming that there's really no need for them. SRFI-44 does not need to depend on any OO framework or library to get dynamic dispatch based on the collection type. If it is desired to have a "generic" interface that can work on collections yet to be defined, then we have to specify how those collections can assume a form that will make sense to that interface. And that doesn't necessarily mean function names, it just means ways to find the functions themselves programmatically. In scheme, that's easy; we can store functions in local variables or structures, just like anything else. Therefore consider as a possibility, a vector a few dozen elements long. Let the first element, at index zero, contain a symbol that gives the type of the collection. Let the element at index 1 contain a pointer to the actual data of the collection, whether it's a hash table or a btree or an association list or whatever. Let the element at index 2 contain whichever procedure can be used to insert! an element into the collection. Then you have the possibility of a generic interface for collections of the form, (define coll-insert! (lambda (coll addition) ((vector-ref coll 2)(vector-ref coll 1) addition))) (define coll-type (lambda (coll) (vector-ref coll 0))) and so on... You wouldn't really write raw index numbers; this would happen inside a let-syntax that associated nice symbolic names with index numbers to simplify maintenance. And any future collection author, if they provide the same vector of functions and the same initial pointer to the data structure, can provide a collection that uses coll-insert! and coll-type. This wipes out your name and argument conflicts; you don't need individual names for all the functions on all the collection types, you just need a few dozen names, all of the form "coll-*" or "dict-*", that nobody else is using. Future collection and dictionary authors will need to use one name only, a name of the form "make-*-collection" or "make-*-dictionary," that returns a collection or dictionary "object" (which is just a vector of data and functions). The mechanism is extensible; you may develop only 20-30 "generic" functions and then let future SRFI authors add more as needs are discovered. For performance reasons, let there always be a constant vector index at compile time, so the function lookups can always be O(1) - even inlined if the compiler is smart - and then maybe bitgrinders like me won't be too disgusted with its efficiency to use it. This avoids type-checking overhead for sequential checks against various collection types entirely, replacing all of them with a single O(1) vector lookup. The mechanism allows default implementations for "efficiency" functions (functions that can be implemented more efficiently on some structures than your generic few operators allow): They can be coded using the generic operators and provided by a make-collection function. Then the implementor of, say, make-olist-collection will start with the vector returned from make-collection and, if she doesn't override whichever functions are profoundly stupid for olists, then she "inherits" generic versions of them from the collection SRFI that will work anyway, however slowly. In fact he could just copy the minimal form he gets back from make-collection into a longer vector and define a few new "coll-*" or "dict-*" functions himself if there wasn't any place for his new stuff in the vector you defined. It becomes the responsibility of the implementors of future collections to provide at least the few generic functions that will make the "generics" work, but they could still override any stupidities in a very well-defined way without breaking the structure of the collection interface. And it'll work. Immediately. And it'll be totally clear to everybody how to write collections that this interface can use. Bear