HsLua.Core.Run

hslua-core-2.2.1: Bindings to Lua, an embeddable scripting language

Copyright | © 2007–2012 Gracjan Polak; © 2012–2016 Ömer Sinan Ağacan; © 2017-2022 Albert Krewinkel
License | MIT
Maintainer | Albert Krewinkel <tarleb+hslua@zeitkraut.de>
Stability | beta
Portability | non-portable (depends on GHC)
Safe Haskell | Safe-Inferred
Language | Haskell2010

HsLua.Core.Run

Contents

- GCManaged state

Description

Helper functions to run `LuaE` computations.

Synopsis

- run :: LuaE e a -> IO a
- runEither :: Exception e => LuaE e a -> IO (Either e a)
- runWith :: State -> LuaE e a -> IO a
- data GCManagedState
- newGCManagedState :: IO GCManagedState
- closeGCManagedState :: GCManagedState -> IO ()
- withGCManagedState :: GCManagedState -> LuaE e a -> IO a

# Documentation

run :: LuaE e a -> IO a #

Run Lua computation using the default HsLua state as starting point. Exceptions are masked, thus avoiding some issues when using multiple threads. All exceptions are passed through; error handling is the responsibility of the caller.

runEither :: Exception e => LuaE e a -> IO (Either e a) #

Run the given Lua computation; exceptions raised in Haskell code are caught, but other exceptions (user exceptions raised in Haskell, unchecked type errors, etc.) are passed through.

runWith :: State -> LuaE e a -> IO a #

Run Lua computation with the given Lua state. Exception handling is left to the caller; resulting exceptions are left unhandled.

# GCManaged state

data GCManagedState #

Wrapper of a Lua state whose lifetime is managed by the Haskell garbage collector and has a finalizer attached. This means that the state does not have to be closed explicitly, but will be closed automatically when the value is garbage collected in Haskell.

newGCManagedState :: IO GCManagedState #

Creates a new Lua state that is under the control of the Haskell garbage collector.

closeGCManagedState :: GCManagedState -> IO () #

Closes the Lua state and runs all finalizers associated with it. The state _may not_ be used after it has been closed.

withGCManagedState :: GCManagedState -> LuaE e a -> IO a #

Runs a Lua action with a state that's managed by GC.