[Haskell-cafe] Re: Microsoft's Singularity Project and Haskell

wren ng thornton wren at freegeek.org
Sat Jul 31 23:27:24 EDT 2010


Thomas DuBuisson wrote:
>> And note that we wouldn't need unsafePerformIO for the FFI if all
>> programs were made in Haskell ;).
> 
> Perhaps that's true, though entirely unrealistic, in the application
> world.  In the OS world you need access to machine registers and
> special instructions (CR3 anyone? CP15?) which isn't built into any
> language save assembly - for these FFI will always come in handy.
> 
> Also, Haskell continues to have an unfortunate lack of primitives
> suitable for casting types (ex: zero copy form a bytestring like
> entity to Word32s).  In this realm FFI can outperform cleaner looking
> code that must rely on individual byte reads.

The FFI doesn't always require unsafePerformIO, it's just there for 
those cases where the foreign function is truly side-effecting (and 
therefore should be linked to with the type (...->IO A)) but we know 
it's safe/referentially-transparent to ignore those effects at some call 
site.

You can link to foreign code without giving it an IO type. The zero-copy 
version of converting bytestrings is one example where the foreign 
function is pure, and therefore doesn't need to be linked to as IO.

-- 
Live well,
~wren


More information about the Haskell-Cafe mailing list