John

Sorry for slow reply .  It's been a busy week.

| but I am still having a couple issues:
|
| I am having trouble with a couple foreign imports that I think
| should work:
|
| here is one:
|
| > type World__ = State# RealWorld
| >
| > main = IO $ \w -> case  getchar w of
| >     (# w', ch #) -> (# w', () #)
| >
| > foreign import ccall unsafe getchar :: World__ -> (# World__, Int# #)
|
| which produces a
|
| ghc-6.6: panic! (the 'impossible' happened)
|   (GHC version 6.6 for i386-unknown-linux):
|         resultWrapper
|     (# main:Main.World__{tc rpT}, base:GHC.Base.Int{(w) tc 3J} #)#

The crash is definitely a bug.  The user manual does not claim to allow unboxed 
tuples in the return type for a foreign call; so GHC should reject the program 
politely.

You might ask "well, couldn't the above program be accepted?".  Perhaps so... 
but why do you want it.  You should find that if you say
        foreign import ccall unsafe getchar :: IO Int
and then
        do { I# x <- getchar; ...}
then no boxing occurs.  So maybe this new feature isn't reqd.  Let us know

| the other is
|
| where 'global_argc' is a C symbol.
|
| > foreign import ccall "&global_argc" argc :: Addr#

What's the problem here?  Your mail looks garbled.

Concerning primitive types, Ian will respond in a few days.  We're not sure we 
understand what you want!

Simon
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to