From 8d5fecc23f4e986c74295c58473c6ea8d840d955 Mon Sep 17 00:00:00 2001 From: Akshay Date: Sat, 10 Apr 2021 17:38:46 +0530 Subject: introduce modulus arithmetic to std lisp --- src/lisp/std.lisp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'src/lisp') diff --git a/src/lisp/std.lisp b/src/lisp/std.lisp index 2a042a0..6c5beed 100644 --- a/src/lisp/std.lisp +++ b/src/lisp/std.lisp @@ -9,6 +9,18 @@ (define (cdddddr ls) (cdr (cddddr ls))) (define (null? ls) (eq? ls '())) +(define (zero? x) (eq? x 0)) + +(define (remainder x y) + (if (> y x) + x + (remainder (- x y) y))) + +(define (quotient x y) + (/ x y)) + +(define (even? x) (zero? (remainder x 2))) +(define (odd? x) (not (even? x))) (define (length ls) (if (null? ls) @@ -45,9 +57,3 @@ (define (sum ls) (fold 0 + ls)) (define (product ls) (fold 1 * ls)) - -(define (enumerate start stop step) - (if (>= start stop) - '() - (cons start - (enumerate (+ start step) stop step)))) -- cgit v1.2.3