From 4afc8ffdfe7ca2976bbab9d59da4c2ae11902c2f Mon Sep 17 00:00:00 2001 From: Akshay Date: Tue, 30 Mar 2021 19:33:46 +0530 Subject: add assert primitive; pass state in Evaluator --- src/lisp/std.lisp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/lisp/std.lisp') diff --git a/src/lisp/std.lisp b/src/lisp/std.lisp index c723a13..8350482 100644 --- a/src/lisp/std.lisp +++ b/src/lisp/std.lisp @@ -22,5 +22,27 @@ accumulator (cdr ls)))) +(define (map func ls) + (if (null? ls) + '() + (cons (func (car ls)) + (map func (cdr ls))))) + +(define (filter pred ls) + (if (null? ls) + '() + (if (pred (car ls)) + (cons (car ls) (filter pred (cdr ls))) + (filter pred (cdr ls))))) + +(define (member? item ls) + (if (null? ls) + #f + (or (eq? item (car ls)) + (member? item (cdr ls))))) + +(define (assert expr) + (assert-eq #t expr)) + (define (sum ls) (fold 0 + ls)) (define (product ls) (fold 1 * ls)) -- cgit v1.2.3