<div dir="auto">Hey, I ran into this earlier today, though it was in a where clause. :) Luckily I already knew what to google, since there are multiple ways to handle it and I wasn't sure which was best (I went with "just give it a signature").<div dir="auto"><br></div><div dir="auto">You're looking at the storied Monomorphism Restriction!</div><div dir="auto"><br></div><div dir="auto"><a href="https://wiki.haskell.org/Monomorphism_restriction">https://wiki.haskell.org/Monomorphism_restriction</a><br></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Aug 14, 2018, 8:33 PM Jeffrey Brown <<a href="mailto:jeffbrown.the@gmail.com">jeffbrown.the@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Today I was writing a lot of Hashable instances, and found it hard to read code littered long lines mostly consisting of `hashWithSalt`, so I made a synonym:</div><div><br></div><div>infixl 5 ##</div><div>(##) = hashWithSalt</div><div><br></div><div>But when I replaced all the `hashWithSalt`s with ##, I got lots of weird errors -- GHC kept wanting things to be Strings that were Ints, or vice verse. The problem vanished when I added this type signature:</div><div><br></div><div>(##) :: Hashable a => Int -> a -> Int</div><div><br></div><div>That's exactly the same type signature that hashWithSalt has.</div><div><br></div><div>Is this expected behavior? Desirable?</div><div><br></div><div><br></div>-- <br><div dir="ltr" class="m_7148894241454598007gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Jeff Brown | Jeffrey Benjamin Brown</div><div dir="ltr"><a href="https://msu.edu/~brown202/" style="font-size:12.8px" target="_blank" rel="noreferrer">Website</a>   |   <a href="https://www.facebook.com/mejeff.younotjeff" style="font-size:12.8px" target="_blank" rel="noreferrer">Facebook</a>   |   <a href="https://www.linkedin.com/in/jeffreybenjaminbrown" style="font-size:12.8px" target="_blank" rel="noreferrer">LinkedIn</a><span style="font-size:12.8px">(spammy, so I often miss messages here)   </span><span style="font-size:12.8px">|</span><span style="font-size:12.8px">   </span><a href="https://github.com/jeffreybenjaminbrown" style="font-size:12.8px" target="_blank" rel="noreferrer">Github</a><span style="font-size:12.8px">   </span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
_______________________________________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
Only members subscribed via the mailman list are allowed to post.</blockquote></div>