The second one, that is '==>' is the one which should be used. Yes,
'==>' is treated as a macro, it replaces symbol on the left hand side by
parse tree of thing on the right hand side. Difference is that '==' is
a definition, thing on the right hand side of '==' is supposed to have a
value. So '==' should work at semantic level, while '==>' works at syntactic
level.
Currently semantic handling in Spad compiler has troubles at early
stage of compilation, so in some place '==' is treated as '==>'.
And in some other places '==' may fail when '==>' works.
But if semantic handling is improved differences may show up and
there is possiblity of errors when wrong thing is in use.
Note: differences between the two are rather subtle, so in most
cases either should work.
Remark: FriCAS book say that '==' is "delayed assignment". This
meaning should be considered obsolete now.
--
Waldek Hebisch