Neil, Does the following sum up the situation? The class Num has subclasses containing various numeric types and the literal 1 is a value for one or more of those types. Hence the Haskell compiler says the instance 1) is OK. But at run time, without the quantified (1:Int), the 1 could of more than one type, which causes a problem.
Thanks for the quick and informative response, Pat Neil Brown wrote: > On 01/07/10 12:37, Patrick Browne wrote: >> Why do some cases such as 1) fail to run even if they are the only >> instantiation. >> >> -- 1) Compiles but does not run >> instance LocatedAt Int String where >> spatialLocation(1)="home" >> > > That instance is fine. I presume the problem is that you are trying to > run this function using "spatialLocation 1" as the function call. The > problem with that is that the "1" part has type Num a => a, i.e. it can > be any Num type. Even though you only have one instance, that's not > used to constrain the type for "1". The call "spatialLocation (1::Int)" > works correctly. Looking at your other examples, all the ones that > don't work have a numeric type for the parameter, so I suspect it is the > same issue throughout. > > Thanks, > > Neil. This message has been scanned for content and viruses by the DIT Information Services E-Mail Scanning Service, and is believed to be clean. http://www.dit.ie _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe