Unsafe functions: Difference between revisions
BrettGiles (talk | contribs) m (Typo) |
m (spelling) |
||
Line 11: | Line 11: | ||
Unsafe functions can break type safety (unsafeCoerce#, unsafePerformIO), | Unsafe functions can break type safety (unsafeCoerce#, unsafePerformIO), | ||
interfere with lazy IO (unsafeInterleaveIO), or break | interfere with lazy IO (unsafeInterleaveIO), or break [http://en.wikipedia.org/wiki/Parametricity parametricity] (seq). | ||
Their use (except in the case of <hask>seq</hask>) would require some | Their use (except in the case of <hask>seq</hask>) would require some | ||
kind of assurance on the part of the programmer that what they're doing | kind of assurance on the part of the programmer that what they're doing |
Revision as of 12:52, 26 August 2007
There are a number of unsafe functions in the libraries.
unsafePerformIO :: IO a -> a
unsafeInterleaveIO :: IO a -> IO a
unsafeInterleaveST :: ST s a -> ST s a
unsafeIOToST :: IO a -> ST s a
unsafeIOToSTM :: IO a -> STM a
unsafeFreeze, unsafeThaw
unsafeCoerce# :: a -> b
seq :: a -> b -> b
Unsafe functions can break type safety (unsafeCoerce#, unsafePerformIO),
interfere with lazy IO (unsafeInterleaveIO), or break parametricity (seq).
Their use (except in the case of seq
) would require some
kind of assurance on the part of the programmer that what they're doing
is safe.
This article is a stub. You can help by expanding it.