From: sforman Date: Fri, 4 Aug 2023 17:38:52 +0000 (-0700) Subject: A start on simple functions. X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=7c9663594b75dd3aaff2788787c9c20217f2572b;p=joypy%2FThun.git A start on simple functions. I'm sure there's a cooler way to do this, but it works. (This is my first Scheme code.) --- diff --git a/implementations/scheme-chicken/joy.scm b/implementations/scheme-chicken/joy.scm index dd32e72..07c020b 100644 --- a/implementations/scheme-chicken/joy.scm +++ b/implementations/scheme-chicken/joy.scm @@ -10,7 +10,14 @@ (joy (cons (car expression) stack) (cdr expression) dict)))) (define (joy-eval symbol stack expression dict) - (values (cons symbol stack) expression dict)) + (define (is-it? name) (string=? symbol name)) + (cond + ((is-it? "+") (values (joy-add stack) expression dict)) + ((is-it? "-") (values (joy-sub stack) expression dict)) + (else (values (cons symbol stack) expression dict)))) + +(define (joy-add stack) (cons (+ (cadr stack) (car stack)) (cddr stack))) +(define (joy-sub stack) (cons (- (cadr stack) (car stack)) (cddr stack))) (define (string-replace str from to) @@ -72,6 +79,6 @@ (joy '() (text-to-expression text) '()) (joy-expression-to-string stack))) -(display (doit "ab cd [[ ]] 234 [true] false")) +(display (doit "ab cd [[ ]] 23 4 - [true] false")) (newline)