\definedataset[nicedata]
\starttext
\startluacode
local name = "nicedata"
-- For exposition only
local function dofactorial(n)
local function inner(c,m)
if m<2 then return c end
return inner(c*m, m-1)
end
return inner(1,n)
end
local function factorial(n)
local stringn = tostring(n)
if job.datasets.collected[name] then
return job.datasets.collected[name].factorial[stringn]
else
local mydata = {[stringn] = tostring(dofactorial(n))}
job.datasets.setdata{
name = name,
tag = "factorial",
data = mydata
}
return mydata[stringn]
end
end
interfaces.implement{
name = "factorial",
public = true,
arguments = {"string"},
actions = {tonumber, factorial, context}
}
\stopluacode
\factorial{7}
\stoptext
What happens is that, in each run, both the first and the second conditions are met, so the compilation is twice as slow, the opposite result of what I meant to do. How do I fix that?
Jairo
On 3/24/2021 5:20 AM, Jairo A. del Rio wrote:
> Thank you very much. It's useful, indeed. However, what I need is to
> bypass TeX (Lua > .tuc) if possible, since all the data I need to handle
> is generated with Lua scripts.
datasets-001.tex in the test suite
-----------------------------------------------------------------
Hans Hagen | PRAGMA ADE
Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------