<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="place"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:Arial;
        color:windowtext;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-GB link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal style='text-autospace:none'><b><font size=2 color="#0000c4"
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:#0000C4;font-weight:bold'>I&#8217;m just trying to pick up the basics&#8230;.and
I&#8217;ve managed to write this code&#8230;which remarkably works&#8230;&#8230;<o:p></o:p></span></font></b></p>

<p class=MsoNormal style='text-autospace:none'><b><font size=2 color="#0000c4"
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:#0000C4;font-weight:bold'><o:p>&nbsp;</o:p></span></font></b></p>

<p class=MsoNormal style='text-autospace:none'><b><font size=2 color="#0000c4"
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:#0000C4;font-weight:bold'><o:p>&nbsp;</o:p></span></font></b></p>

<p class=MsoNormal style='text-autospace:none'><b><font size=2 color="#0000c4"
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:#0000C4;font-weight:bold'><o:p>&nbsp;</o:p></span></font></b></p>

<p class=MsoNormal style='text-autospace:none'><b><font size=2 color="#0000c4"
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:#0000C4;font-weight:bold'>module</span></font></b><font size=2
color=black face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:black'> <st1:place w:st="on">Main</st1:place> </span></font><b><font
size=2 color="#0000c4" face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New";color:#0000C4;font-weight:bold'>where</span></font></b><font
size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><b><font size=2 color="#0000c4"
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:#0000C4;font-weight:bold'>data</span></font></b><font size=2 color=black
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:black'> SquareType = SquareConstructor Int</span></font><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><b><font size=2 color="#0000c4"
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:#0000C4;font-weight:bold'>class</span></font></b><font size=2
color=black face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:black'> ShapeInterface shape </span></font><b><font size=2 color="#0000c4"
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:#0000C4;font-weight:bold'>where</span></font></b><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=black
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>&nbsp; &nbsp;&nbsp;&nbsp; area :: shape</span></font><b><font size=2 color="#0000c4"
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:#0000C4;font-weight:bold'>-&gt;</span></font></b><font size=2
color=black face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>Int</span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><b><font size=2 color="#0000c4"
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:#0000C4;font-weight:bold'>data</span></font></b><font size=2 color=black
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:black'> ShapeType = forall a. ShapeInterface a =&gt; ShapeType a</span></font><font
size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><b><font size=2 color="#0000c4"
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:#0000C4;font-weight:bold'>instance</span></font></b><font size=2
color=black face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:black'> ShapeInterface SquareType </span></font><b><font size=2
color="#0000c4" face="Courier New"><span style='font-size:10.0pt;font-family:
"Courier New";color:#0000C4;font-weight:bold'>where</span></font></b><font
size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=black
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; area (SquareConstructor sideLength) = sideLength *
sideLength</span></font><font size=2 face="Courier New"><span style='font-size:
10.0pt;font-family:"Courier New"'><o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=black
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>main = </span></font><b><font size=2 color="#0000c4"
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:#0000C4;font-weight:bold'>do</span></font></b><font size=2 color=black
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:black'> </span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=black
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font><b><font size=2 color="#40c0c0"
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:#40C0C0;font-weight:bold'>putStrLn</span></font></b><font size=2
color=black face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:black'> (</span></font><b><font size=2 color="#40c0c0" face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:#40C0C0;font-weight:
bold'>show</span></font></b><font size=2 color=black face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:black'> (area
(SquareConstructor 4)))</span></font><font size=2 face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=black
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name &lt;- </span></font><b><font size=2 color="#40c0c0"
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:#40C0C0;font-weight:bold'>getLine</span></font></b><font size=2
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=black
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font><b><font size=2 color="#40c0c0"
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:#40C0C0;font-weight:bold'>putStrLn</span></font></b><font size=2
color=black face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:black'> </span></font><font size=2 color="#804040" face="Courier New"><span
style='font-size:10.0pt;font-family:"Courier New";color:#804040'>&quot;&quot;</span></font><font
size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face=Arial><span style='font-size:10.0pt;
font-family:Arial'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>But my next iteration was to try to parametise SquareType&#8230;.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>So something like <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><b><font size=2 color="#0000c4"
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:#0000C4;font-weight:bold'>data</span></font></b><font size=2 color=black
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:black'> SquareType a = Num a =&gt; SquareConstructor a<o:p></o:p></span></font></p>

<p class=MsoNormal style='text-autospace:none'><font size=2 color=black
face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New";
color:black'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=2 face="Courier New"><span style='font-size:10.0pt;
font-family:"Courier New"'>but of course doing this breaks everything&#8230;&#8230;.sepecifically
the instance declaration<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>`SquareType' is not applied to enough type arguments<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>Expected kind `*', but `SquareType' has kind `* -&gt; *'<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>In the instance declaration for `ShapeInterface SquareType'<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>And I can&#8217;t seem to get it to work&#8230;..<o:p></o:p></span></font></p>

</div>

</body>

</html>