type classes and generality

Norman Ramsey nr@eecs.harvard.edu
Mon, 09 Jul 2001 18:26:27 -0400


 > On 09-Jul-2001, Norman Ramsey <nr@eecs.harvard.edu> wrote:
 > > I'm trying to model probability and leave the
 > > representation of probability unspecified other than
 > > it must be class Real.  But I'm having trouble with
 > > random numbers; how can I show that if a type has class Real,
 > > it also has class Random.Random?  Is there a way to accomplish
 > > this goal other than by changing the library?
 > 
 > I'm not sure if I fully understand your goal.
 > But one thing you can do is to define a wrapper type
 > 
 > 	newtype WrapReal r = WrapReal r
 > 
 > and make the wrapper an instance of Random.Random
 > if the underlying type is an instance of Real
 > 
 > 	instance Real r => Random.Random (WrapReal r) where
 > 		...
 > 
 > Then you can use the wrapper type whenever you want to get a random number.

The problem is that without intensional type analysis, I wouldn't know
how to fill in the instance methods in the `...'

N