#lisp I may be going to hell, but at the moment my-own #softwareIndividuals scripting 'scroact' is like this.
I have a type:
-- scrscript
[: type thingtype]
[: attributes {actions substs}]
actions is a sequence:
(get testscr actions)
=>
<[put b c d]
[put e f g]>
if I want to setf (get 'e 'j) 'h instead I would
scroact testscr f j g h
Since it just performs substs on a copy of the scripted sequence of actions. If there is no &rest plist, it uses (get scriptname 'substs) for the substs.