
On Tue, 19 Jun 2007, Brent Yorgey wrote:
But before I get too far (it looks like it will be straightforward yet tedious to implement), I thought I would throw the idea out there and see if anyone knows of anything similar that has already been done before (a cursory search of the wiki didn't turn up anything). I don't want to reinvent the wheel here.
Do you have some examples, where such a data type is really superior to strong typing? There are examples like computing the average, where a natural number must be converted to a different type: average xs = sum xs / fromIntegral (length xs) but this one can easily replaced by average xs = sum xs / genericLength xs Thus, before you spend much time on making Haskell closer to Perl, how about collecting such examples, work out ways how to solve them elegantly in the presence of strong typing and set up a wiki page explaining how to work with strongly typed numbers? I think, this topic really belongs to http://www.haskell.org/haskellwiki/Category:FAQ Strongly typed numbers are there for good reason: There is not one type that can emulate the others. Floating point numbers are imprecise, a/b*b=a does not hold in general. Rationals are precise but pi and sqrt 2 are not rational. People have designed languages again and again which ignore this, and they failed. See e.g. MatLab which emulates an integer (and even a boolean value) by a complex valued 1x1 matrix.