Library with some useful extensions to the IO monad.
Author: Michael Hanus
Version: June 2007
| Exported names: |
Datatypes:
IORef
Functions:
connectToCommand
| exclusiveIO
| execCmd
| getAssoc
| newIORef
| readCompleteFile
| readIORef
| setAssoc
| updateFile
| writeIORef
| Summary of exported functions: |
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
| Imported modules: |
| Exported datatypes: |
Mutable variables containing values of some type. The values are not evaluated when they are assigned to an IORef.
Constructors:
| Exported functions: |
:: String -> IO (Handle,Handle,Handle)
Executes a command with a new default shell process.
The standard I/O streams of the new process (stdin,stdout,stderr)
are returned as handles so that they can be explicitly manipulated.
They should be closed with IO.hClose since they are not
closed automatically when the process terminates.
Example call: (execCmd cmd)
cmd
- the shell command to be executed
:: String -> IO Handle
Executes a command with a new default shell process.
The input and output streams of the new process is returned
as one handle which is both readable and writable.
Thus, writing to the handle produces input to the process and
output from the process can be retrieved by reading from this handle.
The handle should be closed with IO.hClose since they are not
closed automatically when the process terminates.
Example call: (connectToCommand cmd)
cmd
- the shell command to be executed
:: String -> IO String
An action that reads the complete contents of a file and returns it.
This action can be used instead of the (lazy) readFile
action if the contents of the file might be changed.
Example call: (readCompleteFile file)
file
- the name of the file
:: (String -> String) -> String -> IO ()
An action that updates the contents of a file.
Example call: (updateFile f file)
f
- the function to transform the contents
file
- the name of the file
:: String -> IO a -> IO a
Forces the exclusive execution of an action via a lock file. For instance, (exclusiveIO "myaction.lock" act) ensures that the action "act" is not executed by two processes on the same system at the same time.
Example call: (exclusiveIO lockfile action)
lockfile
- the name of a global lock file
action
- the action to be exclusively executed
:: String -> String -> IO ()
Defines a global association between two strings. Both arguments must be evaluable to ground terms before applying this operation.
:: String -> IO (Maybe String)
Gets the value associated to a string. Nothing is returned if there does not exist an associated value.
:: a -> IO (IORef a)
Creates a new IORef with an initial values.
:: IORef a -> IO a
Reads the current value of an IORef.
:: IORef a -> a -> IO ()
Updates the value of an IORef.