From 48845ce23b1c7e7c63b5a260421371fe26bb8523 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Wed, 20 Jun 2018 13:35:39 -0400 Subject: [PATCH] Experimenting with faster versions of map, for-each --- scheme/base.sld | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/scheme/base.sld b/scheme/base.sld index c281a716..04c95a2d 100644 --- a/scheme/base.sld +++ b/scheme/base.sld @@ -83,6 +83,8 @@ make-list list-copy map + Cyc-map-loop-1 + Cyc-for-each-loop-1 for-each list-tail list-ref @@ -786,6 +788,17 @@ ;; Fast path. (foldr (lambda (x y) (cons (f x) y)) '() lis1))) + ;; Experimenting with faster versions of map, for-each + (define (Cyc-map-loop-1 f lst) + (if (null? lst) + '() + (cons (f (car lst)) (Cyc-map-loop-1 f (cdr lst))))) + (define (Cyc-for-each-loop-1 f lst) + (if (null? lst) + '() + (begin (f (car lst)) + (Cyc-for-each-loop-1 f (cdr lst))))) + (define (for-each f lis1 . lists) (if (not (null? lis1)) (if (pair? lists)