Personal tools

Unsafe functions

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
m (expand)
m (Typo)
Line 12: Line 12:
 
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 paramatericity (seq).
There 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
 
is safe.
 
is safe.

Revision as of 22:24, 24 November 2006

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 paramatericity (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.