:: IO String -> String package:base-compat
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.
This version of
unsafePerformIO is more efficient because it
omits the check that the IO is only being performed by a single
thread. Hence, when you use
unsafeDupablePerformIO, there is a
possibility that the IO action may be performed multiple times (on a
multiprocessor), and you should therefore ensure that it gives the
same results each time. It may even happen that one of the duplicated
IO actions is only run partially, and then interrupted in the middle
without an exception being raised. Therefore, functions like
bracket cannot be used safely within
unsafeDupablePerformIO.
The largest element of a non-empty structure.
This function is non-total and will raise a runtime exception if the
structure happens to be empty. A structure that supports random access
and maintains its elements in order should provide a specialised
implementation to return the maximum in faster than linear time.
Examples
Basic usage:
>>> maximum [1..10]
10
>>> maximum []
*** Exception: Prelude.maximum: empty list
>>> maximum Nothing
*** Exception: maximum: empty structure
WARNING: This function is partial for possibly-empty structures like
lists.
The least element of a non-empty structure.
This function is non-total and will raise a runtime exception if the
structure happens to be empty. A structure that supports random access
and maintains its elements in order should provide a specialised
implementation to return the minimum in faster than linear time.
Examples
Basic usage:
>>> minimum [1..10]
1
>>> minimum []
*** Exception: Prelude.minimum: empty list
>>> minimum Nothing
*** Exception: minimum: empty structure
WARNING: This function is partial for possibly-empty structures like
lists.