|
RE: Unboxed integers: msg#00041lang.haskell.glasgow.bugs
On 14 February 2005 19:13, Iavor Diatchki wrote: > 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 It looks like GHC is performing a bogus transformation in the Simplifier. It's not correct in general to beta-reduce ((\x.True) e) into True if e has an unlifted type. Simon PJ is the caretaker of the simplifier, and he's away on holiday right now, I'll ask him to take a look when he gets back. Cheers, Simon
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Unboxed integers, Iavor Diatchki |
|---|---|
| Next by Date: | [ ghc-Bugs-1120891 ] :i gives bogus type, SourceForge.net |
| Previous by Thread: | Unboxed integers, Iavor Diatchki |
| Next by Thread: | [ ghc-Bugs-1065291 ] Bad error message for missing module in --make, SourceForge.net |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |