On Tuesday 05 August 2003 4:00 pm, Simon Peyton-Jones wrote: > | > id# :: (a :: # ) -> a > | > id# x = x > > That should really be rejected. You couldn't call it because you'd have > to instantiate 'a' to Int# or Double#, and that would mean different > code for different calls.
GHC (after modifying the parser to allow # to stand for the kind of unlifted type) seems to behave very nicely with this definition - it does not generate any code for it, and inlines its uses; so the problem never actually arises (but I expect it would for more complex code). I guess I shouldn't rely on that, anyhow. > One clue: take a look at the UArray library. > > http://www.haskell.org/ghc/docs/latest/html/base/Data.Array.Unboxed.html > > UArray is parameterised by Int, Float, Double, but it describes arrays > that hold Int#, Float#, Double# respectively. Maybe you could re-use > ideas from there? Interesting! It seems that just writing wrappers around my new primitive operations, that do boxing and unboxing as appropriate, works out just fine - GHC does all the expected unboxing. So it is not worth trying to work with boxed values directly. Great, thanks! :-) -- Sebastien _______________________________________________ Glasgow-haskell-users mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users