Konrad Hinsen <[EMAIL PROTECTED]> wrote: > I am trying to write a larger piece of code using only type > constraints for all the numbers, not specific types, in order to be > able to choose the precision as late as possible.
Good for you! (I say this in all seriousness.) > This works rather well (something I can't say of many other > languages), but one problem I keep running into is constants. > > Something I need frequently is, for example, the Boltzman constant, > 0.0083144708636327096 in my unit system. I can certainly type > 0.0083144708636327096 everywhere in the code and make things work, > literals have the nice property of being overloaded. But for the sake > of readibility, I prefer to give this beast a name and have the > explicit value only once in my code. So I create a module "Constants" > with something like > > k_B = 0.0083144708636327096 > > The trouble is that k_B then becomes "Double" by default Right. The good old monomorphism rule, I assume. Query: does this rule ever make a programmer's job easier? Beats me. > (or any other type I declare it to be). Right. But: you can declare it to have type Fractional alpha => alpha, which is the same type the constant has in the middle of an expression. <snip> Jon Cast _______________________________________________ Haskell-Cafe mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell-cafe