[Haskell-cafe] matrix computations based on the GSL
carette at mcmaster.ca
Wed Jun 29 22:31:43 EDT 2005
Henning Thielemann wrote:
> I'm also aware of that I mean different objects when I write
>uniformly '1'. But I know that they are somehow different.
Since '1' can safely be used to denote the unit of any monoid, it does
indeed have a lot of applications. And of course the syntactic artifact
should not be confused with its denotation.
>I'm also ok
>with not writing a conversion from say the integer 1 to the fraction 1/1,
>but I know that there had to be one. We should be aware of such
>abbreviations before adding them to a programming language.
But there is a difference here that is worth exploring. There is a
canonical embedding of Z into Q. This embedding preserves the
properties of Z as much as possible. It is even possible to directly
``see'' Z in Q. There is also an embedding of the representable
integers into the floating point domain - but it does not have nice
properties. It most definitely does not allow one to see the integers
in amongst the floats (you just have to consider any representable
integer with more significant bits than your float representation to see
that). It seems safe to ignore canonical embeddings that preserve
properties, but not the others.
>But the multiplication in A*x already needs multi-parameter type classes.
The matrix A already needs dependent types :-) Even simpler things do -
see the work on Automath done in the late 60s.
>>Note that the one giant try at a statically typed mathematics system
>>(Axiom w/ programming language Aldor) never caught on,
>You mean I should have a closer look on it?
By all means! Axiom
(http://page.axiom-developer.org/zope/mathaction/FrontPage) and Aldor
(http://www.aldor.org) are extremely elegant, and contain many
interesting ideas that are still ahead of other so-called ``research''
languages. They can both slice and dice through algebraic problems like
few other systems can, at least on the elegance front. Magma
(http://magma.maths.usyd.edu.au/magma/) comes close, with the added
advantage that it is *fast*.
Of course, don't try to symbolically solve a differential equation, do a
Laplace transform, compute a closed form for a definite sum or a
definite integral in any of those systems -- those facilities don't even
exist. But that might have something to do with the problem that
``symbolic'' mathematics (especially in analysis) works on intensional
representations directly, while most type theories are purely
extensional. But see Oleg's message
http://email@example.com/msg15686.html to see how
Haskell can support intensional representations (indirectly). It is
worth comparing that solution with similar functionality in Scheme to
see the distance that still needs to be covered.
More information about the Haskell-Cafe