From 4b772db7b36abc597d17d2c994227b5c032323ae Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 29 Dec 2020 00:26:21 -0800 Subject: shuffle/nshuffle: take optional random state argument. * eval.c (eval_init): Register shuffle and nshuffle as two-argument functions with optional argument. * lib.c (nshuffle): Take random-state argument, defaulting to value of random_state special variable. (shuffle): Take random-state argument, pass down to nshuffle. * lib.h (shuffle, nshuffle): Declarations updated. * txr.1: Updated. --- lib.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lib.c') diff --git a/lib.c b/lib.c index b3873c95..462e19a8 100644 --- a/lib.c +++ b/lib.c @@ -9653,7 +9653,7 @@ val sort(val seq, val lessfun, val keyfun) abort(); } -val nshuffle(val seq) +val nshuffle(val seq, val randstate) { seq_info_t si = seq_info(seq); @@ -9673,7 +9673,7 @@ val nshuffle(val seq) case SEQ_VECLIKE: case SEQ_HASHLIKE: { - val rs = random_state; + val rs = default_arg(randstate, random_state); val n = length(seq); val i; @@ -9696,10 +9696,10 @@ val nshuffle(val seq) abort(); } -val shuffle(val seq) +val shuffle(val seq, val randstate) { if (seqp(seq)) - return nshuffle(copy(seq)); + return nshuffle(copy(seq), randstate); type_mismatch(lit("nshuffle: ~s is not a sequence"), seq, nao); } -- cgit v1.2.3