> I notice that Fricas says that it can't coerce a Symbol to an
> Expression. Is that a bug, or do I really have to convert symbols into
> expressions explicitly?
A difference between interpreter and compiler is that the interpreter
tries to find some coercion or retraction function and applies them
implicitly. That makes the life of the user usually easier, but the
interpreter can make wrong guesses of your intentions.
The compiler does such an coercion only in very simple cases otherwise
YOU must provide the right conversion of the object into the respective
type. And this is a good thing to require programmers to be explicit.
Suppose in the future there would be a little change in the FriCAS
library so that (if you were not explicit) the compiler would choose
another coercion function. That shouldn't actually matter much since
coercions are supposed to be injections, but being an injection is just
a convention and is not forced by the compiler.
My suggestion is that you should always be as explicit as possible. You
will appreciate it when you read you program after 5 years.