From 3c1d5ac361f2de3fadf560c931346c6436eec960 Mon Sep 17 00:00:00 2001 From: sforman Date: Sat, 21 Oct 2023 12:40:30 -0700 Subject: [PATCH] joy-dup --- implementations/scheme-chicken/joy.scm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/implementations/scheme-chicken/joy.scm b/implementations/scheme-chicken/joy.scm index 4c3e7a2..1029edb 100644 --- a/implementations/scheme-chicken/joy.scm +++ b/implementations/scheme-chicken/joy.scm @@ -72,7 +72,7 @@ ((bool) (joy-bool stack expression dict)) - ((dup) (values (cons (car stack) stack) expression dict)) + ((dup) (values (joy-dup stack) expression dict)) ((pop) (values (cdr stack) expression dict)) ((stack) (values (cons stack stack) expression dict)) ((swaack) (values (cons (cdr stack) (car stack)) expression dict)) @@ -121,7 +121,7 @@ (if (predicate term) (values term rest) (abort message)))) (define (pop-list stack) (pop-kind stack list? "Not a list.")) -(define (pop-int stack) (pop-kind stack number? "Not an integer.")) +(define (pop-int stack) (pop-kind stack number? "Not an integer.")) (define (pop-bool stack) (pop-kind stack boolean? "Not a Boolean value.")) @@ -142,6 +142,10 @@ ((list? term) (not (null? term))) (else #t))) +(define (joy-dup stack) + (receive (term _) (pop-any stack) (cons term stack))) + + (define (joy-rest stack0) (receive (el stack) (pop-list stack0) (if (null-list? el)