| 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) |
|---|