<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Translating Fortran mixed mode arithmetic<br>expressions into Haskell is quite a challenge.<br>Believe it or not<br><br>c=10.**(11-int(alog10(r)+10))<br><br>translates to<br><br>let c = (**) 10.0 $ fromIntegral $ subtract 11 $ truncate $ (+) (logBase 10.0 r) 10.0<br><br>I finally broke the expression below into two parts<br>(k1 &amp; k2) to ease translation. I get it that Haskell is<br>expecting to subtract two Integers and is instead<br>being given an Integer and a Double. What must<br>I do to make this work? Are there any guidelines<br>for doing this kind of translation work?<br><br>Michael <br><br>================<br><br>Prelude&gt; let mm = 2<br>Prelude&gt; let k1 = 3*mm+2<br>Prelude&gt; let k2 = (/) 150 119<br>Prelude&gt; let k = k1 - k2<br><br>&lt;interactive&gt;:1:13:<br>&nbsp;&nbsp;&nbsp; Couldn't match expected type
 `Integer'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; against inferred type `Double'<br>&nbsp;&nbsp;&nbsp; In the second argument of `(-)', namely `k2'<br>&nbsp;&nbsp;&nbsp; In the expression: k1 - k2<br>&nbsp;&nbsp;&nbsp; In the definition of `k': k = k1 - k2<br>Prelude&gt; :t 150/119<br>150/119 :: (Fractional t) =&gt; t<br>Prelude&gt; <br><br></td></tr></table><br>