<br><br><div class="gmail_quote">2010/12/29 Albert Y. C. Lai <span dir="ltr">&lt;<a href="mailto:trebla@vex.net">trebla@vex.net</a>&gt;</span><br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="im">On 10-12-29 12:50 PM, michael rice wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
I think of (r -&gt; m a) as a type signature and Int or Bool by themselves<br>
as types. So, all type signatures are themselves types?<br>
</blockquote>
<br>
</div><a href="http://www.haskell.org/onlinereport/haskell2010/haskellch4.html#x10-620004" target="_blank">http://www.haskell.org/onlinereport/haskell2010/haskellch4.html#x10-620004</a><br>
<br>
In particular<br>
<br>
gendecl → vars :: [context =&gt;] type    (type signature)<br>
<br>
Therefore I think of<br>
<br>
n :: Int<br>
f :: r -&gt; m a<br>
<br>
as type signatures, and their right-hand sides alone,<br>
<br>
Int<br>
r -&gt; m a<br>
<br>
as types.<br></blockquote></div><br>I used to think about types as mathematical sets, and type signatures in this case are just sequences of characters denoting these types. They of course must have some formal grammar as it was quoted above.<br>
<br>I&#39;d like to note that one type can be denoted by many type signatures. For example, String and [Char]. And as another case, a -&gt; b and c -&gt; d. One may come up with more advanced examples involving type families.<br>
<br>