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.
