summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2014-12-18 08:38:37 -0800
committerKaz Kylheku <kaz@kylheku.com>2014-12-18 08:38:37 -0800
commit756d5ee30683a13d93e0009b3c99c25d939a3ef8 (patch)
tree675ae52a45a5368f31a034a74598dd7de1279215
parent0e696e94cdf30c3b5a14a36f2636d1cfe55d5d34 (diff)
downloadtxr-756d5ee30683a13d93e0009b3c99c25d939a3ef8.tar.gz
txr-756d5ee30683a13d93e0009b3c99c25d939a3ef8.tar.bz2
txr-756d5ee30683a13d93e0009b3c99c25d939a3ef8.zip
* lib.c (copy): Support copying random state objects
vi make_random_state. * txr.1: Updated.
-rw-r--r--ChangeLog7
-rw-r--r--lib.c5
-rw-r--r--txr.128
3 files changed, 28 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 3c798b09..9dc18282 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2014-12-18 Kaz Kylheku <kaz@kylheku.com>
+
+ * lib.c (copy): Support copying random state objects
+ vi make_random_state.
+
+ * txr.1: Updated.
+
2014-12-17 Kaz Kylheku <kaz@kylheku.com>
* rand.c (rand32): Bugfix: if the seed object is a random
diff --git a/lib.c b/lib.c
index 8c8fd1b2..a4ce5536 100644
--- a/lib.c
+++ b/lib.c
@@ -6093,9 +6093,12 @@ val copy(val seq)
case COBJ:
if (seq->co.cls == hash_s)
return copy_hash(seq);
+ if (seq->co.cls == random_state_s)
+ return make_random_state(seq);
/* fallthrough */
default:
- type_mismatch(lit("copy: ~s is not a sequence"), seq, nao);
+ type_mismatch(lit("copy: cannot copy object of type ~s"),
+ typeof(seq), nao);
}
}
diff --git a/txr.1 b/txr.1
index 33cfdfee..8151de77 100644
--- a/txr.1
+++ b/txr.1
@@ -17141,41 +17141,47 @@ is zero, otherwise
.coNP Function @ copy
.synb
-.mets (copy << sequence )
+.mets (copy << object )
.syne
.desc
The
.code copy
-function duplicates a sequence. If
-.meta sequence
+function duplicates objects of various supported types: sequences, hashes and random states. If
+.meta object
is
.codn nil ,
it
returns
.codn nil .
If
-.meta sequence
+.meta object
is a list, it returns
.cblk
-.meti (copy-list << sequence ).
+.meti (copy-list << object ).
.cble
If
-.meta sequence
+.meta object
is a string, it returns
.cblk
-.meti (copy-str << sequence ).
+.meti (copy-str << object ).
.cble
If
-.meta sequence
+.meta object
is a vector, it returns
.cblk
-.meti (copy-vec << sequence ).
+.meti (copy-vec << object ).
.cble
If
-.meta sequence
+.meta object
is a hash, it returns
.cblk
-.meti (copy-hash << sequence ).
+.meti (copy-hash << object )
+.cble
+Lastly, if
+.meta object
+is a random state, it returns
+.cblk
+.meti (make-random-state << object ).
.cble
Except in the case when