On Sat, Jul 24, 2010 at 01:10:56PM +0200, Jürgen Doser wrote: > This seems to be a bug in ghc. First, let's fix bar to give the full > three arguments (Int, Float, Double) to g: > > bar f g = proc x -> do > (f -< x) `foo` (\n m k -> g -< (n,m,k)) > > ghc infers the type: > > bar :: (t -> String) -> ((Double, Float, Int) -> String) -> t -> String > > and we see that the argument order in the second argument to bar is > reversed. But the arguments are still given to bar in the order (Int, > Float, Double). For example, the 6.0 in foo is interpreted as an Int and > outputs a 0 (the first 32 bits in such a small double are zeros). > When one varies the numbers in foo, one can see the effects in bar. Can > someone from GHC HQ confirm my understanding, or is this just not > supposed to work with multiple arguments?
You're right: it's getting the argument order wrong, so -dcore-lint fails on this example and all bets are off. Definitely a bug. _______________________________________________ Glasgow-haskell-users mailing list [email protected] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
