Re: Another example for syntactically lightweight closures
[
Date Prev][
Date Next][
Thread Prev][
Thread Next]
[
Date Index]
[
Thread Index]
- Subject: Re: Another example for syntactically lightweight closures
- From: Jean-Claude Wippler <jcw@...>
- Date: Mon, 4 Feb 2008 19:47:44 +0100
unwind_protect( io.close, f )( function()
print( f:read( "*a" ) )
end )
With syntactic sugar for closure arguments, we get:
unwind_protect( io.close, f ) do
print( f:read( "*a" ) )
end
This does not allow arguments, which could be useful for iterated
callbacks as in Ruby:
5.times { |i| ... }
The idea being that it lets the called function "drive" the one passed
in.
Assuming the closing parenthesis is the main issue, would it be an
idea to look for an alternate notation? Here's a strange one:
unwind_protect( io.close, f ) # function()
print( f:read( "*a" ) )
end
Taking this further:
function myif (c,a,b) if c then a() else b() end end
myif (condition) # function ()
print "yes"
end # function ()
print "no"
end
Yuck. Just to show what such Smalltalk-like "code bocks" can lead to.
-jcw