diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2023-04-23 22:23:23 +0200 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2023-04-23 22:23:23 +0200 |
| commit | f5409662d478093ebb79fdb308538be7bf42f701 (patch) | |
| tree | 9607736b5200610a7e8cdb9d5750abcf00faaa0f /shared | |
| parent | b214b07a67d48ad9205f63641891ff173ff53fca (diff) | |
fixup
Diffstat (limited to 'shared')
| -rw-r--r-- | shared/data-directed-programming.rkt | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/shared/data-directed-programming.rkt b/shared/data-directed-programming.rkt index 6cecaf1..7566e30 100644 --- a/shared/data-directed-programming.rkt +++ b/shared/data-directed-programming.rkt @@ -15,15 +15,21 @@ ;; Type tagged data (define (attach-tag type-tag contents) - (cons type-tag contents)) + (cond ((number? contents) contents) + ((symbol? contents) contents) + (else (cons type-tag contents)))) (define (type-tag datum) - (if (pair? datum) - (car datum) - (error "Bad tagged datum -- TYPE-TAG" datum))) + (cond + ((pair? datum) (car datum)) + ((number? datum) 'scheme-number) + ((symbol? datum) 'symbol) + (else (error "Bad tagged datum -- TYPE-TAG" datum)))) (define (contents datum) - (if (pair? datum) - (cdr datum) - (error "Bad tagged datum -- CONTENTS" datum))) + (cond + ((pair? datum) (cdr datum)) + ((number? datum) datum) + ((symbol? datum) datum) + (else (error "Bad tagged datum -- CONTENTS" datum)))) (define (find-type type seq) (define (rec items) @@ -39,7 +45,7 @@ (define dispatch-table '()) (define (printer) (newline) - (display dispatch-table)) + (println dispatch-table)) (define (get op types) (let ((op-datum (find-type op dispatch-table))) (if op-datum |
