From c4d80f6c4e61f807f38f1577406fbd82b42bc128 Mon Sep 17 00:00:00 2001 From: sforman Date: Wed, 11 Oct 2023 20:13:02 -0700 Subject: [PATCH] Use match a little more. --- implementations/scheme-chicken/joy.scm | 29 +++++++++++--------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/implementations/scheme-chicken/joy.scm b/implementations/scheme-chicken/joy.scm index 2b46973..fa01d0b 100644 --- a/implementations/scheme-chicken/joy.scm +++ b/implementations/scheme-chicken/joy.scm @@ -55,25 +55,18 @@ (define (joy-eval symbol stack expression dict) (match symbol - ("+" ((joy-func +) stack expression dict)) - ("-" ((joy-func -) stack expression dict)) - ("*" ((joy-func *) stack expression dict)) - ("/" ((joy-func quotient) stack expression dict)) ; but for negative divisor, no!? - ("%" ((joy-func modulo) stack expression dict)) - - ("add" ((joy-func +) stack expression dict)) - ("sub" ((joy-func -) stack expression dict)) - ("mul" ((joy-func *) stack expression dict)) - ("div" ((joy-func quotient) stack expression dict)) ; but for negative divisor, no!? - ("mod" ((joy-func modulo) stack expression dict)) + ((or "+" "add") ((joy-func +) stack expression dict)) + ((or "-" "sub") ((joy-func -) stack expression dict)) + ((or "*" "mul") ((joy-func *) stack expression dict)) + ((or "/" "div") ((joy-func quotient) stack expression dict)) ; but for negative divisor, no!? + ((or "%" "mod") ((joy-func modulo) stack expression dict)) ("<" ((joy-func <) stack expression dict)) (">" ((joy-func >) stack expression dict)) ("<=" ((joy-func <=) stack expression dict)) (">=" ((joy-func >=) stack expression dict)) ("=" ((joy-func =) stack expression dict)) - ("<>" ((joy-func not-equal) stack expression dict)) - ("!=" ((joy-func not-equal) stack expression dict)) + ((or "<>" "!=") ((joy-func not-equal) stack expression dict)) ("bool" (joy-bool stack expression dict)) @@ -183,9 +176,10 @@ (values (cons (tokenator token) el) rest))))) (define (one-token-lookahead token tokens) - (cond ((string=? token "]") (error "Extra closing bracket.")) - ((string=? token "[") (expect-right-bracket tokens '())) - (else (values (tokenator token) tokens)))) + (match token + ("]" (error "Extra closing bracket.")) + ("[" (expect-right-bracket tokens '())) + (_ (values (tokenator token) tokens)))) (define (parse0 tokens acc) (if (null? tokens) @@ -229,7 +223,8 @@ (load-defs! (make-hash-table string=? string-hash))) (define (load-defs! dict) - (for-each (lambda (def) (add-def! def dict)) (defs)) ;defs is defined in defs.scm + (for-each (lambda (def) (add-def! def dict)) (defs)) + ; defs is defined in defs.scm dict) (define (add-def! def dict)