diff --git a/extra/assocs/extras/extras.factor b/extra/assocs/extras/extras.factor index cf63ee8472..80e2521d4f 100644 --- a/extra/assocs/extras/extras.factor +++ b/extra/assocs/extras/extras.factor @@ -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