-
Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathequal-basic.rkt
More file actions
82 lines (65 loc) · 1.91 KB
/
equal-basic.rkt
File metadata and controls
82 lines (65 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#lang racket/base
(define h1 #hash((1 . 2) (3 . 4)))
(define h2 #hash((color . red) (shape . circle)))
(define h3 #hash(((a b c) . d) (g . (e f g))))
(define h4 #hash(("name" . "Vishesh") ("location" . "Boston")))
(displayln (hash 1 2 3 4))
(displayln "equality")
(list? h1)
(hash? h1)
(hash? h2)
(hash? h3)
(hash? h4)
(hash? 'not-a-hash)
(hash-equal? h1)
(hash-eqv? h1)
(hash-eq? h1)
(hash-equal? h2)
(hash-eqv? h2)
(hash-eq? h2)
(define h (make-hash (list (cons 1 2) (cons 3 4))))
(define wh (make-weak-hash (list (cons 1 2) (cons 3 4))))
(define imh (make-immutable-hash (list (cons 1 2) (cons 3 4))))
(displayln h)
(hash? h)
(hash-equal? h)
(hash-eqv? h)
(hash-eq? h)
;; make-weak-hashX not Racket weak hash
;(displayln wh)
(hash? wh)
(hash-equal? wh)
(hash-eqv? wh)
(hash-eq? wh)
(displayln imh)
(hash? imh)
(hash-equal? imh)
(hash-eqv? imh)
(hash-eq? imh)
(displayln "numbers")
(equal? (hash-ref h1 1) 2)
(equal? (hash-ref h1 3) 4)
(displayln "symbols")
(equal? (hash-ref h2 'color) 'red)
(equal? (hash-ref h2 'shape) 'circle)
(displayln "pairs")
(equal? (hash-ref h3 '(a b c)) 'd)
(equal? (hash-ref h3 'g) '(e f g))
(displayln "strings")
(equal? (hash-ref h4 "name") "Vishesh")
(equal? (hash-ref h4 "location") "Boston")
(equal? (hash-ref h4 "age" #f) #f)
(struct posn (x y) #:transparent)
(displayln "hash-set")
(equal? (hash-set h1 5 6) #hash((1 . 2) (3 . 4) (5 . 6)))
(equal? (hash-set h1 5 6) #hasheq((1 . 2) (3 . 4) (5 . 6)))
(equal? (hash-set h1 5 6) #hasheqv((1 . 2) (3 . 4) (5 . 6)))
(equal? (hash-set h1 '(1 4) 'foobar)
#hash(((1 4) . 'foobar) (1 . 2) (3 . 4) (5 . 6)))
(equal? (hash-ref (hash-set h3 '(a b c) 'new-value) '(a b c))
'new-value)
(displayln "structs")
(equal? (hash-set h1 (posn 2 4) (list (posn 0 0) 'origin))
(hash-set h1 (posn 2 4) (list (posn 0 0) 'origin)))
(equal? (hash-set h1 (posn 2 4) (list (posn 0 0) 'origin))
(hash-set h1 (posn 2 4) (list (posn 0 0) 'not-origin)))