Uwe Hollerbach wrote:
Yes, I've looked at that and am thinking about it. I'm not quite
certain it's needed in my real program... I seem to have convinced
myself that if I actually specify a proper set of unique prefixes, ie,
set the required lengths for both "frito" and "fromage" to 3 in the
test program, I won't get into this situation. Assuming I haven't
committed another brain-fart there, that would be sufficient;
presumably, in a real program one would want to actually specify the
unique prefix, rather than a non-unique pre-prefix. It seems to work
fine in my real program, anyway.

Another approach ---assuming you're not wedded to Parsec--- would be to construct a trie, e.g. with bytestring-trie[1]. Then use Data.Trie.submap to look up the query. If the result is unique then you go with it, if not then list the submap's keys in your error message.

The big benefit of this approach is that you needn't maintain a list of lengths for disambiguating the keys, the trie does that for you.


[1] http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring-trie

--
Live well,
~wren
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to