
10 Mar
2011
10 Mar
'11
11:36 a.m.
On Thursday 10 March 2011 17:15:29, Bas van Dijk wrote:
On 10 March 2011 14:47, Daniel Fischer
wrote: If memory serves correctly, it's impredicative polymorphism.
Indeed. For example the following also doesn't type check in GHC-7:
foo :: (forall s. ST s a) -> a foo st = ($) runST st
Surprisingly the following does:
foo :: (forall s. ST s a) -> a foo st = runST $ st
Because GHC contains a special rule for infix $. Also see:
http://article.gmane.org/gmane.comp.lang.haskell.glasgow.user/19152
Bas
Bedankt. I sort of knew there was a special case for ($) because runST $ do ... works, but not exactly what was handled. So until I forget, I now know it's infix ($) and only that. Cheers, Daniel