Hi Aditya,
The problem is not that the file was not loaded, but that in Lua,
loading a file only loads it and does not execute it; Lua is a "dynamic"
language, by which I mean that definitions are created through execution.
Attached is a simple example, note that there is no proper error
checking - you probably want to check the results rather than pattern
matching against constants.
Thanks,
Claude
On 23/10/10 03:21, aditya siram wrote:
Hi all,
I'm having some issues calling Lua functions from Haskell. I have the
following in "Haskell2Lua.lua":
function hello ()
return "hello world"
end
And my Haskell file "Haskell2Lua.hs" looks like this:
import qualified Scripting.Lua as
Lua
main =
do
l<-
Lua.newstate
Lua.openlibs
l
succ<- Lua.loadfile l
"/Haskell2Lua.lua"
print succ
Lua.callproc l "hello"
""
Lua.close l
When I compile and run this file I get:
0
Haskell2Lua: user error (attempt to call a nil value)
I have tried some variations on calling the function including:
Lua.callproc l "hello"
Lua.callfunc l "hello"
Lua.callfunc l "hello" ""
I know the Lua bridge is working because the following works:
Lua.callproc l "print" "Hello from Lua"
Any help is appreciated!
-deech
--
http://claudiusmaximus.goto10.org
function hello ()
return "hello world"
end
import qualified Scripting.Lua as L
main :: IO ()
main = do
-- create a new Lua interpreter with libraries
l <- L.newstate
L.openlibs l
-- load a Lua source code file
0 <- L.loadfile l "test.lua"
-- execute the loaded file
0 <- L.pcall l 0 0 0
-- call a function defined when the loaded file was executed
r <- L.callfunc l "hello"
-- print the result of the function call
putStrLn r
-- destroy the Lua interpreter
L.close l
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe