[Yhc] coreFunc has extra argument

Tom Hawkins tomahawkins at gmail.com
Mon Mar 3 22:38:51 EST 2008


I noticed a coreFunc has an extra argument and I'm not sure where it's
coming from.  For example if I compile:

  main :: IO ()
  main = return ()

and print out the coreFuncs and coreDatas I get:

  Main;main = Prelude;YHC.Internal.IO;Prelude.Monad;return Prelude;()
  Prelude;1807_ioReturn v25601 v25602 = YHC.Primitive;_E v25601
  Prelude;YHC.Internal.IO;Prelude.Monad;return v25600 =
      Prelude;1807_ioReturn v25600
  main = Main;main

  data YHC.Primitive;_E b =
        YHC.Primitive;_E b
  data Prelude;() =
        Prelude;()

Why does Prelude;1807_ioReturn include an extra argument (v25602) that
is not used?  If I informally type check this by hand, I get a
contradiction:

  main :: IO ()
  Main;main :: IO ()
  Prelude;YHC.Internal.IO;Prelude.Monad;return :: a -> IO a
  Prelude;YHC.Internal.IO;Prelude.Monad;return = Prelude;1807_ioReturn

Therefore if follows:

  Prelude;1807_ioReturn :: a -> IO a

But the Prelude;1807_ioReturn definition has type:

  Prelude;1807_ioReturn :: a -> b -> YHC.Primitive;_E a

What am I missing here?  Am I to interpret this as meaning:

  b -> YHC.Primitive;_E a  ==  IO a  ?

Thanks for any help!

-Tom


More information about the Yhc mailing list