<div dir="ltr"><div>The problem is that the moment you divided by two, it can no longer be an instance of Num.</div><div><br></div><div>Instances of Num include: Integers, Ints and Words.  Once divided, you can no longer use that result in places where an Integer is required, because it won't be.</div><div><br></div><div>What you can do is use the `div` function which will round down to the nearest Integer value.  Then it is an instance of Integral, which includes Integers, Ints, and Words (but floating point types)<br></div><div><br></div><div>You can also use `round`, `floor`, or `ceiling` to round your result to an appropriate integer after you've divided.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Dec 11, 2020 at 8:04 AM M Douglas McIlroy <<a href="mailto:m.douglas.mcilroy@dartmouth.edu">m.douglas.mcilroy@dartmouth.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">For rational functions that take on integer values at integer<br>
arguments, for example n*(n+1)/2, is there a way to doctor the<br>
corresponding Haskell definition<br>
<br>
    f n = n*(n+1)/2<br>
<br>
so that the type signature becomes<br>
<br>
    f :: Num a => a -> a<br>
<br>
rather than<br>
<br>
    f :: Fractional a => a -> a<br>
<br>
Doug McIlroy<br>
_______________________________________________<br>
Beginners mailing list<br>
<a href="mailto:Beginners@haskell.org" target="_blank">Beginners@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners</a><br>
</blockquote></div>