Autoincrement keys for hash tree

Started by hilti, May 02, 2011, 10:58:33 PM

Previous topic - Next topic

hilti

Hi!



I'm stucked in generating auto increment keys for a hash tree. Here's my approach:



(new Tree 'products)

(define (highest-key tree)
(if-not (empty? (tree))
(begin
(println "Tree is not empty.")
(string (inc (integer (first (last (sort (tree)) <)))))
)
(begin
(println "Tree is empty.")
(string (integer 1))
)
)
)

(products (highest-key products) "hello")
(products (highest-key products) "hello")
(products (highest-key products) "hello")
(products (highest-key products) "hello")
(products (highest-key products) "hello")
(products (highest-key products) "hello")
(products (highest-key products) "hello")
(products (highest-key products) "hello")
(products (highest-key products) "hello")
(products (highest-key products) "hello")
(products (highest-key products) "hello")
(products (highest-key products) "hello")

(products)


The thing is: hash keys have to be strings, right? And that's why I get in troubles on sorting this list, which (products) returns.



(("1" "hello") ("10" "hello") ("2" "hello") ("3" "hello") ("4" "hello") ("5" "hello")
 ("6" "hello")
 ("7" "hello")
 ("8" "hello")
 ("9" "hello"))


Is there another approach for hash keys? What are You guys using?



Cheers

Hilti
--()o Dragonfly web framework for newLISP

http://dragonfly.apptruck.de\">http://dragonfly.apptruck.de

Lutz

#1

> (new Tree 'Hash)
Hash
> (Hash (format "%05d" (inc Hash:counter)) "A")
"A"
> (Hash (format "%05d" (inc Hash:counter)) "B")
"B"
> (Hash)
(("00001" "A") ("00002" "B"))
> (symbols Hash)
(Hash:Hash Hash:_00001 Hash:_00002 Hash:counter)
>


The variable 'Hash:counter' is automatically created when newLISP reads the statement and 'inc' brings it from 'nil' to 0. The format makes sure that the sort order is Ok.

hilti

#2
Thanks Lutz! Your solution works great. I think this is a cool snippet for the Code Patterns documentation.
--()o Dragonfly web framework for newLISP

http://dragonfly.apptruck.de\">http://dragonfly.apptruck.de