2009/3/5 <[email protected]>: > hi Group, > > I executed these commands.. > > $ guile > guile> (define mc (cons 'a 'b)) > guile> mc > (a . b) > guile> (define ml (list 1 2 mc)) > guile> ml > (1 2 (a . b)) > guile> (list mc 1 2 3) > ((a . b) 1 2 3) > guile> (define mh (make-hash-table 2)) > guile> (hashq-create-handle! mh 'one mc) > (one a . b) > guile> (hashq-create-handle! mh 'two ml) > (two 1 2 (a . b)) > guile> mh > #(((two 1 2 (a . b)) (one a . b)) ()) > guile> (use-modules (ice-9 pretty-print)) > guile> (pretty-print mh) > #(((two 1 2 (a . b)) (one a . b)) ()) > guile> > > I was expecting handle:'one of hash:mh to be printed in parens as > #(((two 1 2 (a . b)) (one (a . b))) ())
According to your logic, you must have also been expecting #(((two (1 2 (a . b))) (one (a . b))) ()) which is not what you wrote. > Why is behaviour of print for a hash different from others? > Am I missing anything? When I read the documentation, I see: Return the (key . value) pair for key in the given hash table. If key is not in table then create an entry for it with init as the value, and return that pair. Notice the dot between key and value, which means that hashq-create-handle! behaves like cons, and not like list; from your mail, it seems that you were expecting it to behave like list. --linas
