Difference between revisions of "Unsafe functions"

From HaskellWiki
Jump to navigation Jump to search
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 paramatericity (seq).
+
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.