Friday, November 27, 2009

Thursday, November 26, 2009

Inline agents should be closures

Compare the current SmartEiffel inline agent definition:

local
   i: INTEGER
do
   agent (h: INTEGER) is
      do
         std_output.put_line(h.out)
      end (i)
      .call([])
end

with a real closure:

local
   i: INTEGER
do
   agent is
      do
         std_output.put_line(i.out)
      end
      .call([])
end

What do you think?