[Haskell-cafe] Weird behavior with arrow commands
ross at soi.city.ac.uk
Sat Jul 24 07:45:27 EDT 2010
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.
More information about the Haskell-Cafe