[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Weird behavior of hash-table
From: |
Mark H Weaver |
Subject: |
Re: Weird behavior of hash-table |
Date: |
Sun, 24 Nov 2019 03:04:36 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) |
Hi Zelphir,
Zelphir Kaltstahl <address@hidden> 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
- Weird behavior of hash-table, Zelphir Kaltstahl, 2019/11/23
- Re: Weird behavior of hash-table,
Mark H Weaver <=
- Re: Weird behavior of hash-table, tomas, 2019/11/24
- Re: Weird behavior of hash-table, Zelphir Kaltstahl, 2019/11/24
- Re: Weird behavior of hash-table, tomas, 2019/11/24
- Re: Weird behavior of hash-table, Mark H Weaver, 2019/11/24
- Re: Weird behavior of hash-table, tomas, 2019/11/24
- Re: Weird behavior of hash-table, John Cowan, 2019/11/24
- Re: Weird behavior of hash-table, Zelphir Kaltstahl, 2019/11/24