• Subject: Re: Another example for syntactically lightweight closures
• From: Bret Victor <bret@...>
• Date: Tue, 5 Feb 2008 07:45:02 +0000 (UTC)

```Miles Bader <miles.bader <at> necel.com> writes:

>          |a, b|(a + b)
>             =>  function (a, b) return (a + b) end
>
>          |a|{ print (a) }
>             =>  function (a) print (a) end

I thing I like about Lua syntax is that punctuation is kept minimal,
and words are used (in, do, end) when that's how you would read the
code out loud.

A Lua-like syntax for closures might mimic Lua's for-loop syntax:

for a,b in some(expression) do  ... end

Here's an expression closure:

local add = (a,b in a + b)
=> local add = function (a,b) return a + b end

local sum = fold(t, 0, (a,b in a + b))
=> local sum = fold(t, 0, function (a,b) return a + b end)

Here's a statement block closure:

local happyprint = x in do print(x .. "!") end
=> local happyprint = function (x) print(x .. "!") end

table.foreach(t, x in do print(x .. "!") end)
=> table.foreach(t, function (x) print(x .. "!") end)

I'm not perfectly happy with either of these, but it's a start, maybe.

```

• Follow-Ups:
• References: