From 878358ec9e2b96230915634e18f54bac3b7a3fe0 Mon Sep 17 00:00:00 2001 From: Max New Date: Wed, 15 Oct 2014 22:34:57 -0400 Subject: [PATCH] list/e performance tweak --- pkgs/redex-pkgs/redex-lib/redex/private/enumerator.rkt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/redex-pkgs/redex-lib/redex/private/enumerator.rkt b/pkgs/redex-pkgs/redex-lib/redex/private/enumerator.rkt index 0cef0ef5d9..b0d0bfcdff 100644 --- a/pkgs/redex-pkgs/redex-lib/redex/private/enumerator.rkt +++ b/pkgs/redex-pkgs/redex-lib/redex/private/enumerator.rkt @@ -1358,17 +1358,18 @@ [(= k 1) (map/e list car (car es))] [(not all-inf?) (apply list/e es)] [else - (define factors (reverse (prime-factorize k))) + (define factors (prime-factorize k)) (let loop ([factors factors] - [es es]) + [es es] + [k k]) (match factors [(cons factor '()) (prime-length-box-list/e es)] [(cons factor factors) - (define chunk-size (/ (length es) factor)) + (define chunk-size (/ k factor)) (define chunk/es (for/list ([es (in-list (chunks-of es chunk-size))]) - (loop factors es))) + (loop factors es chunk-size))) (map/e (λ (chunks) (apply append chunks))