diff options
Diffstat (limited to 'mew.scm')
-rw-r--r-- | mew.scm | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/mew.scm b/mew.scm index c5f1f31..caed21a 100644 --- a/mew.scm +++ b/mew.scm @@ -17,7 +17,7 @@ odometer one-of op op* per prn proj puts rand range rep - scan scan-right sing? search seq set set-at shuffle str slurp + sample scan scan-right sing? search seq set set-at shuffle str slurp tally-accumulator tbl time while uniq-accumulator unlist until @@ -412,6 +412,18 @@ (loop (dec i))))) v) + (define (sample o) + (if (hash-table? o) + (esc ret + (let ((n (rand (hash-table-size o))) + (i 0)) + (hash-table-for-each o + (lambda (k v) + (if (= i n) + (ret (cons k v)) + (set! i (inc i))))))) + (get o (rand (len o))))) + (define range (case-lambda (() (make-range-generator 0 +inf.0 1)) |