Copyright | (c) The FFI task force 2003 |
---|---|
License | BSD-style (see the file libraries/base/LICENSE) |
Maintainer | [email protected] |
Stability | provisional |
Portability | portable |
Safe Haskell | Unsafe |
Language | Haskell2010 |
Marshalling support. Unsafe API.
unsafeLocalState :: IO a -> a Source
Sometimes an external entity is a pure function, except that it passes arguments and/or results via pointers. The function unsafeLocalState
permits the packaging of such entities as pure functions.
The only IO operations allowed in the IO action passed to unsafeLocalState
are (a) local allocation (alloca
, allocaBytes
and derived operations such as withArray
and withCString
), and (b) pointer operations (Foreign.Storable
and Foreign.Ptr
) on the pointers to local storage, and (c) foreign functions whose only observable effect is to read and/or write the locally allocated memory. Passing an IO operation that does not obey these rules results in undefined behaviour.
It is expected that this operation will be replaced in a future revision of Haskell.
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/base-4.8.2.0/Foreign-Marshal-Unsafe.html