]> gitweb.factorcode.org Git - factor.git/commitdiff
assocs.extras: Add a word set-once-at that throws if the key is already set.
authorDoug Coleman <doug.coleman@gmail.com>
Mon, 4 Apr 2016 18:45:21 +0000 (11:45 -0700)
committerDoug Coleman <doug.coleman@gmail.com>
Mon, 4 Apr 2016 18:46:34 +0000 (11:46 -0700)
extra/assocs/extras/extras.factor

index cf63ee847259805f023b91e9bf7be6e3cc02c1b0..80e2521d4f39d2d579d206197d57001404ec5945 100644 (file)
@@ -44,3 +44,11 @@ GENERIC: delete-value-at ( value assoc -- )
 
 M: assoc delete-value-at
     [ value-at* ] keep swap [ delete-at ] [ 2drop ] if ;
+
+ERROR: key-exists value key assoc ;
+: set-once-at ( value key assoc -- )
+    2dup ?at [
+        key-exists
+    ] [
+        drop set-at
+    ] if ;
\ No newline at end of file