HORIZON HASKELLDocslts/ghc-9.10.x248f8f02026-10-05Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · 248f8f0 · 2026-10-05

Modulelua-2.3.2Haskell2010

Lua.Call

Function to push Haskell functions as Lua C functions.

Haskell functions are converted into C functions in a two-step process. First, a function pointer to the Haskell function is stored in a Lua userdata object. The userdata gets a metatable which allows to invoke the object as a function. The userdata also ensures that the function pointer is freed when the object is garbage collected in Lua.

In a second step, the userdata is then wrapped into a C closure. The wrapping function calls the userdata object and implements the error protocol, converting special error values into proper Lua errors.

  • 1 value
  • Packagelua-2.3.2
  • Exports1
  • LanguageHaskell2010
  • LicenceMIT
  • SourceCall.hs

Pushes a Haskell operation as a Lua function. The Haskell operation is expected to follow the custom error protocol, i.e., it must signal errors with Lua.hslua_error.

Example

Export the function to calculate triangular numbers.

let triangular :: PreCFunction
    triangular l' = do
      n <- lua_tointegerx l' (nthBottom 1) nullPtr
      lua_pushinteger l' (sum [1..n])
      return (NumResults 1)

hslua_newhsfunction l triangular
withCString "triangular" (lua_setglobal l)