On Wed, Nov 29, 2023 at 02:51:52PM +0100, Grégory Vanuxem wrote:
> Hello,
>
> In Spad, with Exports or Implementation the macro or function
> definition operators can be used. What I mean is that:
>
> Exports == with
> Implementation == add
>
> seems to be identically treated with:
>
> Exports ==> with
> Implementation ==> add
>
> The two seem to compile identically (I have not looked at the Lisp
> code generated).
>
> So my questions are: are these pieces of code treated identically by
> the compiler, if not, is the second piece of code treated as a macro?
> And what is the difference?
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
--
You received this message because you are subscribed to the Google Groups
"FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/fricas-devel/ZWdRC-jyKtJpYIe1%40fricas.org.