[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Scheme's "delay" function in plain Lua?
- From: Michal Kottman <k0mpjut0r@...>
- Date: Fri, 29 Oct 2010 12:04:27 +0200
On Fri, 2010-10-29 at 17:44 +0800, Johnson Lin wrote:
> This might be a n00b question, but..
>
> I know Lua is using strict/eager evaluation, but I found some posts on
> the list, saying that it should be possible to implement a "delay"
> function in plain Lua to imitate lazy evaluation. However It seems
> that I can't find even a single simple example on the web that does
> anything close to this. I'm just curious what approach would you take
> if you were to implement something that can mimic lazy evaluation.
> It's not like memoization techniques or lazy tables. I can't find a
> way to truly make a generic expression or function invocation lazy
> with lazy tables.
I'm not sure if I'm correct, but shouldn't it be possible to use an
anonymous function without parameters, whose body consists of only a
return with the expression you'd like to lazy-evaluate? In order to
retrieve the value later, you just have to call the function.
For example (I can't think of anything more sophisticated right now,
sorry):
local a = 1
local b = 2
-- make 'c' a lazy-expression of a + b
local c = function() return a + b end
...
-- now you want to force (SICP terminology) the value of c
print(c())