Skip to content

Commit 65d2f60

Browse files
NoahStoryMrfindler
authored andcommitted
Refine hash table's type.
1 parent 317437a commit 65d2f60

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

redex-lib/redex/private/env.rkt

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,16 @@
2121
(define-type Env env)
2222
(define-type TEnv t-env)
2323
(define-type Tag Integer)
24-
(define-type (Tagged a) (HashTable Tag a))
24+
(define-type (Tagged a) (Immutable-HashTable Tag a))
2525

26-
(struct: env ([names : (HashTable Symbol Pattern)]
27-
[misnames : (HashTable Symbol (Pairof Pattern (Setof Tag)))]
28-
[nreps : (HashTable Symbol (Pairof Env (Tagged Pattern)))])
26+
(struct: env ([names : (Immutable-HashTable Symbol Pattern)]
27+
[misnames : (Immutable-HashTable Symbol (Pairof Pattern (Setof Tag)))]
28+
[nreps : (Immutable-HashTable Symbol (Pairof Env (Tagged Pattern)))])
2929
#:transparent)
3030

31-
(struct: t-env ([names : (HashTable Symbol Term)]
32-
[misnames : (HashTable Symbol (Listof (Pairof Tag Term)))]
33-
[nreps : (HashTable Symbol (Listof (Pairof TEnv (Tagged Term))))])
31+
(struct: t-env ([names : (Immutable-HashTable Symbol Term)]
32+
[misnames : (Immutable-HashTable Symbol (Listof (Pairof Tag Term)))]
33+
[nreps : (Immutable-HashTable Symbol (Listof (Pairof TEnv (Tagged Term))))])
3434
#:transparent)
3535

3636
(: empty-env : Env)
@@ -63,9 +63,9 @@
6363

6464
(: pure-nrep : Symbol Env Tag Pattern -> Env)
6565
(define (pure-nrep n repnv tag pat)
66-
(: nreps : (HashTable Symbol (Pairof Env (Tagged Pattern))))
66+
(: nreps : (Immutable-HashTable Symbol (Pairof Env (Tagged Pattern))))
6767
(define nreps
68-
(hash-set (ann (hash) (HashTable Symbol (Pairof Env (Tagged Pattern))))
68+
(hash-set (ann (hash) (Immutable-HashTable Symbol (Pairof Env (Tagged Pattern))))
6969
n
7070
(cons repnv
7171
(hash-set (ann (hash) (Tagged Pattern))
@@ -113,7 +113,7 @@
113113
(redex-error 'generate-term-#:ith "mismatch named patterns must be the same pattern, saw ~s and ~s" p1 p2))
114114
(cons p1 (set-union ts1 ts2))])
115115

116-
(: misnames-union : (HashTable Symbol (Pairof Pattern (Setof Tag))))
116+
(: misnames-union : (Immutable-HashTable Symbol (Pairof Pattern (Setof Tag))))
117117
(define misnames-union
118118
(hash-union ms1 ms2 mis-combo))
119119

@@ -130,17 +130,17 @@
130130
(hash-union rs1 rs2 nrep-combo))
131131
(env names-union misnames-union nreps-union)])
132132

133-
(: key-set : (All (k v) (HashTable k v) -> (Setof k)))
133+
(: key-set : (All (k v) (Immutable-HashTable k v) -> (Setof k)))
134134
(define (key-set m)
135135
(list->set (hash-keys m)))
136136

137-
(: hash-union : (All (k v) (HashTable k v) (HashTable k v) (k v v -> v) -> (HashTable k v)))
137+
(: hash-union : (All (k v) (Immutable-HashTable k v) (Immutable-HashTable k v) (k v v -> v) -> (Immutable-HashTable k v)))
138138
(define (hash-union m1 m2 combo)
139139
(: ks1 : (Setof k))
140140
(: ks2 : (Setof k))
141141
(define ks1 (key-set m1))
142142
(define ks2 (key-set m2))
143-
(for/hash: : (HashTable k v)
143+
(for/hash: : (Immutable-HashTable k v)
144144
([k : k (in-set (set-union ks1 ks2))])
145145
(define v1 (hash-ref m1 k (thunk #f)))
146146
(define v2 (hash-ref m2 k (thunk #f)))

0 commit comments

Comments
 (0)