Making generalized Trie type in D

Dmitry Olshansky dmitry.olsh at gmail.com
Mon Jun 4 14:39:47 PDT 2012


On 05.06.2012 1:16, Roman D. Boiko wrote:
> On Monday, 4 June 2012 at 21:07:02 UTC, Roman D. Boiko wrote:
>>>> For example, one by
>>>> one would allow ignoring key encoding (and thus using multiple
>>>> encodings
>>>> simultaneously just as easily as single).
>>>
>>> It's just as easy with the whole thing. Treat it as bytes ;)
>> Except when equivalent keys in different encodings should be treated
>> as equal.

I believe that once encoidng is established your compiler tool should 
use the best code for that encoding. And that means templates,  tailored 
per encoding in my book.
If anything I plan to use Tries on strings without decoding codepoint, 
just using length of it (as first stage, might need some tweak).

 >> But now I can see that my counter-example is only partially
>> valid - walklength could be used instead of length (more expensive,
>> though), and dchars everywhere.
> Another counter-example is searching for strings with specified prefix.
> One-by-one fits better here. I didn't understand whether such use cases
> are supported at both API and implementation levels.

They are not... *yawn*. Okay, I'll make it support InputRange of 
typeof(Key.init[0]) along with specific key type iff key type is 
RandomAccessRange :) It will not work however with SetAsSlot and MapAsSlot.

And before you run away with that horrible idea of ever decoding UTF in 
lexer... Just don't do that. Trust me, it's not as small a price as it 
seems at first. At least keep it only at prototype stage as it 
simplifies things.

-- 
Dmitry Olshansky


More information about the Digitalmars-d mailing list