Thanks for those pointers, Tobias, I'll get those fixed. Carl Eastlund
On Wed, Jul 24, 2013 at 1:34 PM, Tobias Hammer <tobias.ham...@dlr.de> wrote: > I really like the new set features, especially mutable sets and lists as > sets. > > Two things i have notices: > * The docs for set-intersect seem a bit mixed up with set-union stuff > * I could not get set-intersect on lists working, what i've tried > > -> (set-intersect '(1 2 3) '(2 3 4)) > ; set-add: contract violation > ; expected: set? > ; given: 2 > > -> (set-intersect (list->set '(1 2 3)) '(2 3 4)) > ; set-intersect: set arguments have incompatible equivalence predicates > ; first set: (set 1 2 3) > ; incompatible set: '(2 3 4) > > Tobias > > > > On Tue, 23 Jul 2013 17:37:15 +0200, Carl Eastlund <c...@ccs.neu.edu> wrote: > > My work on adding gen:set, and related changes to define-generics and >> gen:dict, is ready for review and (hopefully) to push to the master >> branch. The branch moved in the process of cleaning things up, it's now >> at: >> >> >> https://github.com/carl-**eastlund/racket/tree/generics-**from-scratch<https://github.com/carl-eastlund/racket/tree/generics-from-scratch> >> >> (The "from scratch" just refers to the process of rebuilding the git >> history, I didn't go out of my way to rewrite anything in the code base >> from scratch, although in some places a lot of code did move around.) >> >> What's new in the branch: >> >> - Generics now support a few new options >> - #:fallbacks specifies fallback method implementations for instances >> with no implementation >> - #:fast-defaults specifies instances on a "fast path", useful for >> built-in types >> - #:defined-predicate gives a more intuitive and efficient interface >> than >> #:defined-table >> - #:derive-property allows generics to piggy-back on existing struct >> properties >> >> - Sets are now a generic datatype through gen:set >> - lists are now sets >> - the built-in set types are now documented as "hash sets" >> - there are mutable and weak hash sets >> - you can define new set types quickly with define-custom-set-types >> - most set operations are now methods with fallbacks >> - sets now support -copy and -clear operations, plus mutating [!] >> versions of operations >> >> - Dictionaries have a few changes >> - new macro define-custom-hash-types [*] >> - most dict operations are now methods with fallbacks >> - dicts now support -copy, -clear, -clear!, and -empty? operations >> >> I've run some benchmarks and performance of the various generic operations >> are comparable to the current HEAD, so there should be no major >> performance >> changes with this patch. >> >> [*] I've added define-custom-hash-types and define-custom-set-types rather >> than just adding make-custom-set akin to make-custom-hash because >> make-custom-hash is hard to use. The documented behavior -- that any >> custom hash is equal to any other created with the same bindings and >> predicates / hash functions -- was never true and can be expensive or at >> least tricky to implement. It seemed more sensible to just remove the >> erroneous documentation on make-custom-hash, and add the definition form >> to >> create constructors for new, explicitly-compatible dict and set types. >> Both definition forms bind predicates and constructors for new (set or >> dict) types with immutable, mutable, and weak variants that inter-operate. >> >> If there are no serious issues brought up in the next day or two, I'll >> push >> it to the development branch, since our current release process isn't >> following HEAD. >> >> Carl Eastlund >> > > > -- > ------------------------------**--------------------------- > Tobias Hammer > DLR / Robotics and Mechatronics Center (RMC) > Muenchner Str. 20, D-82234 Wessling > Tel.: 08153/28-1487 > Mail: tobias.ham...@dlr.de > >
_________________________ Racket Developers list: http://lists.racket-lang.org/dev