Henning Thielemann wrote: > On Sun, 3 Oct 2010, Ben Franksen wrote: >> Christopher Done wrote: >> >>> Consider the following program: >>> >>> main = putStrLn $ show $ length [undefined :: a,undefined :: b] >>> >>> A concrete type of the element in list doesn't need to be determined >>> at runtime, or any time. a unifies with b, and that unifies with x in >>> length :: [x] -> Int. >> >> A simpler example is >> >> main = print Nothing > > This seems to be a different example, because "GHCi -Wall" says that the > type variable defaults to (). Thus 'Nothing' has monomorphic type at > runtime. The difference is certainly that 'print' requires a Show > instance, whereas Christopher's example does not require a type > constraint.
Right. I always forget about defaulting. This is an obscure feature of the language. Are there any programs that rely on defaulting and could not be easily re-written so as not to? Cheers Ben _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe