Hello,

There is something strange that is going on with unboxed types in GHC (6.2).
I think it is a bug, but perhaps I am missing something.  If so, I am quite
curious as to what is going on.  Here is the example:

> import GHC.Exts

First we define a function that will give us the bottom element of the unboxed
integers.

> bot    :: () -> Int#
> bot ()  = bot ()

Now we can define a function that will "check" if we have bottom or not,
by terminating or not.

> stops  :: Int# -> Bool
> stops _ = True
>
> test1  :: Bool
> test1   = stops (bot ())

As expected (by me), 'test1' does not terminate --- to unbox values we have to
be strict in them.  So far everything makes sense.   However if we simply make
'stops' into a local function, it starts terminating:

> test2  :: Bool
> test2   = stops (bot ())
>   where
>   stops  :: Int# -> Bool
>   stops _ = True

-Iavor
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to