
Hi, Am Dienstag, den 16.12.2014, 09:59 -0500 schrieb Richard Eisenberg:
On Dec 16, 2014, at 4:01 AM, Joachim Breitner
wrote: another guess (without looking at the code, sorry): Are they in the same module? I.e., can GHC specialize the code to your particular Monad?
No, they're not in the same module. I could also try moving the zipWithAndUnzipM function to the same module, and even specializing it by hand to the right monad.
I did mean zipWithAndUnzipM, so maybe yes: Try that. (I find it hard to believe that any polymorphic monadic code should perform well, with those many calls to an unknown (>>=) with a function parameter, but maybe I’m too pessimistic here.)
Could that be preventing the fusing?
There is not going to be any fusing here, at least not list fusion; that would require your code to be written in terms of functions with fusion rules. Greetings, Joachim -- Joachim “nomeata” Breitner mail@joachim-breitner.de • http://www.joachim-breitner.de/ Jabber: nomeata@joachim-breitner.de • GPG-Key: 0xF0FBF51F Debian Developer: nomeata@debian.org