Hi Mark! Thank you, that is the solution and the explanation!
I read my procedures multiple times, wondering whether I am returning another hash table or anything. It would have taken me a long time before trying to create the vector without the additional quotes. Regards, Zelphir On 11/24/19 9:04 AM, Mark H Weaver wrote: > Hi Zelphir, > > Zelphir Kaltstahl <zelphirkaltst...@posteo.de> writes: > >> I've noticed a strange behavior of hash tables. I put in symbols as keys >> and integers as values, but when I try to get the integers out again by >> using the same symbol, I get back a #f instead. Here is the code I am using: >> >> ~~~~~~~~ >> (use-modules >> ;; SRFI 60: procedures for treating integers as bits >> (srfi srfi-60) >> (ice-9 hash-table)) >> >> >> (define SQUARES >> ;; vector, constant time access >> #('A1 'B1 'C1 'D1 'E1 'F1 'G1 'H1 >> 'A2 'B2 'C2 'D2 'E2 'F2 'G2 'H2 >> 'A3 'B3 'C3 'D3 'E3 'F3 'G3 'H3 >> 'A4 'B4 'C4 'D4 'E4 'F4 'G4 'H4 >> 'A5 'B5 'C5 'D5 'E5 'F5 'G5 'H5 >> 'A6 'B6 'C6 'D6 'E6 'F6 'G6 'H6 >> 'A7 'B7 'C7 'D7 'E7 'F7 'G7 'H7 >> 'A8 'B8 'C8 'D8 'E8 'F8 'G8 'H8)) > I guess that you meant for this to be a vector of symbols. In fact, it > is a vector of lists of the form (quote <symbol>), for which '<symbol> > is a shorthand. > > scheme@(guile-user)> (vector-ref SQUARES 0) > $10 = (quote A1) > > To fix the problem, remove all of the apostrophes (') from the elements > of the vector literal above. Like list literals, vector literals take > raw values, not expressions. > >> (hash-ref SQUARES-TO-INTEGERS 'A1) > scheme@(guile-user)> (hash-ref SQUARES-TO-INTEGERS 'A1) > $11 = #f > scheme@(guile-user)> (hash-ref SQUARES-TO-INTEGERS ''A1) > $12 = 1 > > Mark