-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Description
A compilation in some cases may produce invalid lua that is fails at runtime.
I have not figured out what exactly causes this behavior but succeeded to catch some example.
Example
I tried my best to minimize it but can't find a way to make it smaller.
module Example (baz) where
import Effect (Effect)
import Prelude (class Monad, Unit, bind, discard, pure, unit)
baz ∷ Effect Unit
baz = bar (pure unit)
bar ∷ ∀ f. Monad f ⇒ f Unit → f Unit
bar f = do
f
_ ← pure [ foo f ]
pure unit
foo ∷ ∀ f. Monad f ⇒ f Unit → f Unit
foo fn1 = do
_ ← fn1
fn1
fn1
fn1
Run via:
pslua --foreign-path . --ps-output output--lua-output-file out.lua --entry ExampleGenerated code
...
return {
baz = (function()
return function(f)
local Bind1 = M.Effect_monadEffect.Bind1()
local pure = M.Control_Applicative_pure(M.Effect_monadEffect.Applicative0())
return M.Example_discard(Bind1)(f)(function()
return M.Control_Bind_bind(Bind1)(pure({
[1] = (function()
return function(fn1)
local discard1 = M.Example_discard(Bind11) -- Bind11 is not in scope
return M.Control_Bind_bind(M.Effect_monadEffect.Bind1())(fn1)(function( )
return discard1(fn1)(function()
return discard1(fn1)(function() return fn1 end)
end)
end)
end
end)()(f)
}))(function() return pure(M.Data_Unit_foreign.unit) end)
end)
end
end)()(M.Control_Applicative_pure(M.Effect_applicativeEffect)(M.Data_Unit_foreign.unit))
}Version
pslua: 684b8d2c32524394c51577636a258e71d00cfefb (actual master)
Unisay
Metadata
Metadata
Assignees
Labels
No labels