summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2020-12-29 00:26:21 -0800
committerKaz Kylheku <kaz@kylheku.com>2020-12-29 00:26:21 -0800
commit4b772db7b36abc597d17d2c994227b5c032323ae (patch)
treeb5a9dd0346c859a3fe675fea31a4db28599d9bf2 /lib.c
parent9dae5ba49c7595355ddcf336032c2e12aa84be5f (diff)
downloadtxr-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.c8
1 files changed, 4 insertions, 4 deletions
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);
}