From 60cb6fb8cd7d51374ee8b8baf3edb39f90bb2d0d Mon Sep 17 00:00:00 2001 From: Robby Findler Date: Mon, 13 Oct 2014 20:55:49 -0500 Subject: [PATCH] refactor internals to allow paper to use an (otherwise) internal helper function to illustrate what distributions search uses --- .../redex-lib/redex/private/search.rkt | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/pkgs/redex-pkgs/redex-lib/redex/private/search.rkt b/pkgs/redex-pkgs/redex-lib/redex/private/search.rkt index a478112c0f..b466ac00c1 100644 --- a/pkgs/redex-pkgs/redex-lib/redex/private/search.rkt +++ b/pkgs/redex-pkgs/redex-lib/redex/private/search.rkt @@ -15,7 +15,8 @@ (struct-out eqn) (struct-out dqn) search/next - (struct-out gen-trace)) + (struct-out gen-trace) + get-dist) ;; search tracing facility (provide enable-gen-trace! @@ -191,24 +192,24 @@ #:key (λ (cls) (length (clause-prems cls))))) (define (random-order l depth max-depth #:key [key values]) - (define bd (get-dist l depth max-depth)) + (define len (length l)) + (define bd (get-dist len depth max-depth)) (define n (round ((distribution-sample bd)))) - (define perm (nth-lexico-perm (length l) - (inexact->exact n))) + (define perm (nth-lexico-perm len (inexact->exact n))) (define l-sorted (reverse (sort (shuffle l) < #:key key))) (for/list ([i (in-list perm)]) (list-ref l-sorted i))) (define get-dist (let ([cache (make-hash)]) - (λ (l depth max-depth) - (hash-ref cache (list (length l) depth max-depth) + (λ (number-of-choices depth max-depth) + (hash-ref cache (list number-of-choices depth max-depth) (λ () - (define nperms (factorial (length l))) + (define nperms (factorial number-of-choices)) (define d (binomial-dist (sub1 nperms) (+ (/ depth max-depth) (* 0.05 (- 0.5 (/ depth max-depth)))))) - (hash-set! cache (list (length l) depth max-depth) d) + (hash-set! cache (list number-of-choices depth max-depth) d) d))))) (define (nth-lexico-perm len n)