Strange behavior of strings as functions



(Tested in Maxima 5.15.0 GCL 2.6.8 Windows)

f(1) => f(1)
(f+0)(1) => f(1)
"f"(1) => f(1)
("f")(1) => f(1)
("f"+0)(1) => ERROR
funmake("f",[1]) => ERROR
funmake("f"+0,[1]) => ERROR

"+"(1,2) => 3
funmake("+",[1,2]) => 3
funmake("+"+0,[1,2]) => 3
("+" + 0)(1,2) => ERROR

I encountered this in writing the show_form function earlier today, where I
had to add the nounify to make it work:

   show_form(ex):=if atom(ex) then ex else funmake(nounify(concat("
",part(ex,0))),maplist(show_form,ex));

Does everyone agree that this is inconsistent behavior and that it would be
better not to have errors in the cases above?

         -s