Hi Henri Tuhola:

> I am working on a new programming language and found
> out that the choice of how to allow extension of arithmetic
> is a really tough problem to figure out. Simply implementing
> arbitrary operator overloading and calling it a day doesn't
> seem to be so good choice.

I agree this is the key question: polymorphism.  Overloading
is ad-hoc polymorphism and template (C++) is parametric
polymorphism.

> Designing a new language for computer algebra used to be
> how it was done. Axiom CAS dates to 1971 and was
> apparently called scratchpad back then.

You mentioned the history of ScratchPad/AXIOM, but didn't
comment on it.  It's a very interesting system. It's the only CAS
with a staticly typed compiled language, like Julia/Rust/Haskell.
And it is also built on Lisp, but uses indentation like python.

Just like Julia's abstract type, Rust's trait, Haskell's typeclass,
(C++'s concept), AXIOM has the notation 'Category'.
That is used to solve the problem of polymorphism.
Category in AXIOM is very mathematical, like
Ring/Field/IntegralDomain.

FriCAS is an active fork of AXIOM, you can learn more at
http://fricas.sourceforge.net/
and
https://fricas.github.io/


-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/4859c735-fd69-45e5-9a0a-e11d44f4f8b4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to