| 1 | (use srfi-69)
|
|---|
| 2 |
|
|---|
| 3 | (: make-int-to-symbol (-> (struct hash-table (fixnum symbol))))
|
|---|
| 4 | (define (make-int-to-symbol)
|
|---|
| 5 | (make-hash-table))
|
|---|
| 6 |
|
|---|
| 7 | (hash-table-set! (make-int-to-symbol) 'foo 2)
|
|---|
| 8 |
|
|---|
| 9 | (hash-table-set! (hash-table-copy (the (struct hash-table #f) (make-int-to-symbol))) 'foo 2)
|
|---|
| 10 |
|
|---|
| 11 | (: foo ((struct hash-table (fixnum)) -> fixnum))
|
|---|
| 12 | (define (foo ht)
|
|---|
| 13 | (hash-table-size ht))
|
|---|
| 14 |
|
|---|
| 15 | (print (foo (make-int-to-symbol)))
|
|---|
| 16 |
|
|---|
| 17 | (: print-symbol (symbol -> *))
|
|---|
| 18 | (define (print-symbol s)
|
|---|
| 19 | (print s))
|
|---|
| 20 |
|
|---|
| 21 | (: add-numbers (number number -> number))
|
|---|
| 22 | (define (add-numbers a b)
|
|---|
| 23 | (+ a b))
|
|---|
| 24 |
|
|---|
| 25 | (: bar (forall (t) ((t -> *) (t t -> t) t t -> *)))
|
|---|
| 26 | (define (bar pr op a b)
|
|---|
| 27 | (pr (op a b)))
|
|---|
| 28 |
|
|---|
| 29 | (bar print-symbol add-numbers 'a 'b)
|
|---|