Difference between revisions of "Unsafe functions"

From HaskellWiki
Jump to navigation Jump to search
m (spelling)
m (Added link to "unsafe" keyword in FFI.)
Line 15: Line 15:
 
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
 
is safe.
 
is safe.
  +
  +
"unsafe" is also a keyword which can be used in a [http://haskell.org/haskellwiki/Performance/FFI foreign import declaration].
   
 
{{stub}}
 
{{stub}}

Revision as of 11:45, 8 June 2008

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.

"unsafe" is also a keyword which can be used in a foreign import declaration.

This article is a stub. You can help by expanding it.