On Mon, Apr 11, 2016 at 11:07 AM, Simon Danisch <[email protected]> wrote: > @Christoph: arbitrarily, of course :D Joke aside, it should also use zip for > the (keys, values) constructor (like Base does). > @tshort: > It can have arbitrary isbits & immutables as keys. > E.g, this works (should probably get some macro sugar): > function test{Keys<: Tuple{Val{1}, Val{:c}, > Val{MyKeyType()}}(x::FixedKeyValueDict{Keys}) > > Also, it doesn't need to look up if a Dict is already defined, which > simplifies the implementation. > > In general, I think it's a bit more future proof. > I expect generating types via eval to be never really idiomatic, while > @generated seems to be fine for these kind of optimizations.
"Generated types" don't yet exist in Julia, "generated functions" do. I find generated types quite useful, and often necessary in conjunction with generated functions. One can hide the `@eval` in a generated function, so that the expense is paid at the same time. It should also be possible to extend the `@generated` macro to work for types as well. -erik > With getfield overloading and better constant propagation, the > implementation might be freed of any @generated and macro magic at some > point, which I think is desirable. > > For NamedTuples speaks, that it'll be equally fast or faster in most cases > and getfield/setfield works currently better with types. > Also, it already has the nicer macro sugar ;) > > > > Am Montag, 11. April 2016 14:08:59 UTC+2 schrieb Simon Danisch: >> >> Here is yet another package: FixedSizeDictionaries.jl >> >> From the README: >> Library which implements a FixedSize variant of Dictionaries. These can be >> stack allocated and have O(1) indexing performance without boundcheck. It >> implements most parts of the Base.Dict interface. >> This package is useful, when you want anonymous composite types. You >> should be a bit careful with generating a lot of FixedSizeDict's, since it >> will compile a unique set of functions for every field of a Dict. >> >> I'll be using it to speed up various places where I'm currently using a >> dictionary but where the number of keys is set at compile time. >> Also, Shashi and I contemplated to implement Extensible Records, which >> seems like a good fit to represent all kind of graphics/geometry types. >> FixedSizeDictionaries could be an integral part of this! >> >> Best, >> Simon >> >> PS: >> I do feel like it's time for a package announcement list... -- Erik Schnetter <[email protected]> http://www.perimeterinstitute.ca/personal/eschnetter/
