Copyright | © 2007–2012 Gracjan Polak 2012–2016 Ömer Sinan Ağacan 2017-2021 Albert Krewinkel |
---|---|
License | MIT |
Maintainer | Albert Krewinkel <tarleb+hslua@zeitkraut.de> |
Stability | beta |
Portability | FlexibleInstances, ForeignFunctionInterface, ScopedTypeVariables |
Safe Haskell | None |
Language | Haskell2010 |
Call Haskell functions from Lua.
Synopsis
- class PeekError e => Exposable e a where
- partialApply :: StackIndex -> a -> LuaE e NumResults
- toHaskellFunction :: forall e a. Exposable e a => a -> HaskellFunction e
- registerHaskellFunction :: Exposable e a => Name -> a -> LuaE e ()
Documentation
class PeekError e => Exposable e a where Source #
Operations and functions that can be pushed to the Lua stack. This
is a helper function not intended to be used directly. Use the
wrapper instead.toHaskellFunction
partialApply :: StackIndex -> a -> LuaE e NumResults Source #
Helper function, called by
. Should do a
partial application of the argument at the given index to the
underlying function. Recurses if necessary, causing further partial
applications until the operation is a easily exposable to Lua.toHaskellFunction
Instances
PeekError e => Exposable e (HaskellFunction e) Source # | |
Defined in HsLua.Class.Exposable partialApply :: StackIndex -> HaskellFunction e -> LuaE e NumResults Source # | |
(Peekable a, Exposable e b) => Exposable e (a -> b) Source # | |
Defined in HsLua.Class.Exposable partialApply :: StackIndex -> (a -> b) -> LuaE e NumResults Source # | |
(PeekError e, Pushable a) => Exposable e (LuaE e a) Source # | |
Defined in HsLua.Class.Exposable partialApply :: StackIndex -> LuaE e a -> LuaE e NumResults Source # |
toHaskellFunction :: forall e a. Exposable e a => a -> HaskellFunction e Source #
Convert a Haskell function to a function type directly exposable to Lua. Any Haskell function can be converted provided that:
Any
will be converted to a string and returned
as Lua error.Exception
Important: this does not catch exceptions other than
; exception handling must be done by the converted
Haskell function. Failure to do so will cause the program to crash.Exception
E.g., the following code could be used to handle an Exception
of type FooException, if that type is an instance of
MonadCatch
and Pushable
:
toHaskellFunction (myFun `catchM` (\e -> raiseError (e :: FooException)))