diff options
-rw-r--r-- | eval.c | 4 | ||||
-rw-r--r-- | lib.c | 8 | ||||
-rw-r--r-- | lib.h | 4 | ||||
-rw-r--r-- | txr.1 | 8 |
4 files changed, 13 insertions, 11 deletions
@@ -6927,9 +6927,9 @@ void eval_init(void) reg_fun(intern(lit("nsort"), user_package), func_n3o(nsort, 1)); reg_fun(intern(lit("sort"), user_package), func_n3o(if3(opt_compat && opt_compat <= 237, nsort, sort), 1)); - reg_fun(intern(lit("nshuffle"), user_package), func_n1(nshuffle)); + reg_fun(intern(lit("nshuffle"), user_package), func_n2o(nshuffle, 1)); reg_fun(intern(lit("shuffle"), user_package), - func_n1(if3(opt_compat && opt_compat <= 237, nshuffle, shuffle))); + func_n2o(if3(opt_compat && opt_compat <= 237, nshuffle, shuffle), 1)); reg_fun(intern(lit("find"), user_package), func_n4o(find, 2)); reg_fun(intern(lit("rfind"), user_package), func_n4o(rfind, 2)); reg_fun(intern(lit("find-if"), user_package), func_n3o(find_if, 2)); @@ -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); } @@ -1129,8 +1129,8 @@ val interpose(val sep, val seq); val merge(val list1, val list2, val lessfun, val keyfun); val nsort(val seq, val lessfun, val keyfun); val sort(val seq, val lessfun, val keyfun); -val nshuffle(val seq); -val shuffle(val seq); +val nshuffle(val seq, val randstate); +val shuffle(val seq, val randstate); val multi_sort(val lists, val funcs, val key_funcs); val sort_group(val seq, val keyfun, val lessfun); val unique(val seq, val keyfun, struct args *hashv_args); @@ -33727,8 +33727,8 @@ in the APL language. .coNP Functions @ shuffle and @ nshuffle .synb -.mets (shuffle << sequence ) -.mets (nshuffle << sequence ) +.mets (shuffle < sequence <> [ random-state ]) +.mets (nshuffle < sequence <> [ random-state ]) .syne .desc The @@ -33745,7 +33745,9 @@ itself. The rearrangement depends on pseudo-random numbers obtained from the .code rand -function. +function. The +.meta random-state +argument, if present, is passed to that function. The .code nshuffle |