diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2020-12-29 00:26:21 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-12-29 00:26:21 -0800 |
commit | 4b772db7b36abc597d17d2c994227b5c032323ae (patch) | |
tree | b5a9dd0346c859a3fe675fea31a4db28599d9bf2 /lib.c | |
parent | 9dae5ba49c7595355ddcf336032c2e12aa84be5f (diff) | |
download | txr-4b772db7b36abc597d17d2c994227b5c032323ae.tar.gz txr-4b772db7b36abc597d17d2c994227b5c032323ae.tar.bz2 txr-4b772db7b36abc597d17d2c994227b5c032323ae.zip |
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.
Diffstat (limited to 'lib.c')
-rw-r--r-- | lib.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -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); } |