<div dir="ltr"><font color="#003333"><font size="2"><font face="verdana,sans-serif">In explaining fromIntegral, I want to say that it is really a collection of overloaded functions:<br><br></font></font></font><div style="margin-left: 40px;">

<font color="#003333"><font size="2"><font face="verdana,sans-serif">Integer -&gt; Double</font></font></font><br><font color="#003333"><font size="2"><font face="verdana,sans-serif">Int -&gt; Float</font></font></font><br>

<font color="#003333"><font size="2"><font face="verdana,sans-serif">...</font></font></font><br clear="all"></div><div dir="ltr"><font style="color: rgb(0, 51, 51); font-family: verdana,sans-serif;" size="2"><br>When GHC compiles a line of code with fromIntegral it in, it must decide at compile time which of these overloaded functions to compile to.  This is in contrast to saying that fromIngetral is a function of the type (Integral a, Num b) =&gt; a -&gt; b.  In reality there is no (single) function of the type (Integral a, Num b) =&gt; a -&gt; b because (among other things) every function must map between actual types, but (Integral a, Num b) =&gt; a -&gt; b does not say which actual types are mapped between.  <br>

<br>Is the preceding a reasonable thing to say?<br><br>If so, can I say the same sort of thing about constants like 1 and []? In particular there is no single value []. Instead [] is a symbol which at compile time must be compiled to the empty list of some particular type, e.g., [Int].  There is no such Haskell value as [] :: [a] since [a] (as  type) is not an actual type. I want to say the same thing about 1, i.e., that there is no such Haskell value as 1 :: (Num t) =&gt; t. When the symbol 1 appears in a program, the compiler must decide during compilation whether it is intended to be 1::Int or 1::Integer or 1::Double, etc.<br>

<br><br>-- Russ Abbott<br>______________________________________<br>  Professor, Computer Science<br>  California State University, Los Angeles<br><br>  Google voice: 424-242-USA0 (last character is zero)<br>  blog: <a href="http://russabbott.blogspot.com/" target="_blank">http://russabbott.blogspot.com/</a><br>

  vita:  <a href="http://sites.google.com/site/russabbott/" target="_blank">http://sites.google.com/site/russabbott/</a><br>______________________________________<br></font></div><br>
</div>