Vivian McPhail wrote:
What I want to push is a 'mathematically sound' numeric prelude.  A proper
numerical prelude should have bona fide mathematical obects like groups,
rings, and fields underlying common numerical classes.  It would be edifying
to the student who discovered that the particular data type he is using is
an inhabitant of a known class and can thus take advantage of known
properties, presupplied as class methods.  Reasoning and communication about
programs, data types, and functions would be enhanced.
Yes, except that there are not as many groups, rings and fields out there as you think. For one thing, Float and Double are not in any of those. The best you can do with Float and Double is NonAssociativeAlgebra, which is unlikely to be 'edifying'. At least Integer is a proper ring. There is only one field that I am aware of in Haskell (Rational Integer). [Which is sad since Z_p is so easy to code up, and generally extremely useful].

Some classes would become even more important: monoid, groupoid, semi-group, loop (semi-group with identity), etc. But all of those are, to the average programmer (and many a mathematician), just as scary as Monad.

And personally, the place my semi-groups show up are not in my data-types, but in my *types*.


Jacques
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to