You don't need a type class, you can just define your functions with pattern matching:<div><br></div><div><font class="Apple-style-span" face="'courier new', monospace">rad :: Angle a -> a</font></div><div><font class="Apple-style-span" face="'courier new', monospace">rad (Radians x) = x</font></div>
<div><font class="Apple-style-span" face="'courier new', monospace">rad (Degrees x) = </font><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace">pi * (deg x) / 180</font></span></div>
<div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace"><br></font></span></div><div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace">deg :: Angle a -> a</font></span></div>
<div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace">deg (Radians x) = </font></span><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace">180 * (rad x) / pi</font></span></div>
<div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace">deg (Degrees x) = x</font></span></div><div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace"><br>
</font></span></div><div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="arial, helvetica, sans-serif">Alternatively, you can define Radians and Degrees as separate types and use a type class:</font></span></div>
<div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="arial, helvetica, sans-serif"><br></font></span></div><div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace">data Radians a = Radians a</font></span></div>
<div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace">data Degrees a = Degrees a</font></span></div><div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace"><br>
</font></span></div><div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace">class Angular a where</font></span></div>
<div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace"> rad :: a b -> b</font></span></div><div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace"> deg :: a b -> b</font></span></div>
<div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace"><br></font></span></div><div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace">instance Angular Radians where</font></span></div>
<div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace"> rad (Radians x) = x</font></span></div><div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace"> deg (Radians x) = </font></span><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace">180 * (rad x) / pi</font></span></div>
<div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace"><br></font></span></div><div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace"><span class="Apple-style-span" style="border-collapse: separate; font-size: small; "><div style="font-family: arial; ">
<span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace">instance Angular Degrees where</font></span></div><div style="font-family: arial; ">
<span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace"> rad (Degrees x) = </font></span><span class="Apple-style-span" style="font-family: 'courier new', monospace; font-size: 12px; border-collapse: collapse; ">pi * (deg x) / 180</span></div>
<div style="font-family: arial; "><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace"> deg (Degrees x) = </font></span><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace">x</font></span></div>
<div style="font-family: arial; "><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="'courier new', monospace"><br></font></span></div><div><span class="Apple-style-span" style="font-size: 12px; border-collapse: collapse; "><font class="Apple-style-span" face="arial, helvetica, sans-serif">This would be extensible, but it this case not really useful.</font></span></div>
</span></font></span></div><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta http-equiv="content-type" content="text/html; charset=utf-8">