Multiple Dispatch and Homoiconicity are both present in the Wolfram language (Mathematica).
In Mathematica, you have ‘ToExpression’ which replaces ‘eval’. In addition, you have ‘Apply’ which replaces the ‘head’ from one thing to another such as ‘defvar’ into ‘setf’ in your example. For example,
you could start with bla[ 1, 2, 3] and then Plus @@ bla[1, 2, 3] would change the head to Plus which then transforms to 6. Of course, there is also syntactic sugar where you can write 1 + 2 + 3.
In addition, Mathematica has a pattern matching ability that may be unique that allows you to do extremely compact, fast and powerful programs but, alas, is also highly error prone.