I think what I wrote above might be too complicated, as it is an attempt to 
solve this problem.

In essence this is what I want: 



function function1(a, b, onGreaterThanCallback)
  if(a > b)
    c = a + b
    res = onGreaterThanCallback(c, z)
    return res + 1
  else
    # do anything
    # but return nothing
  end
end


global onGreaterThanCallback = (c) -> c + z

function1(a, b, onGreaterThanCallback)


Problems:

The global variable.

The anonymous function which has performance impact (vs other approaches). 
 We could use Tim Holy's @anon, but then the value of `z` is fixed at 
function definition, which we don't always want.

I think that the ideal optimization would look like this:

      function function1(a, b, z) # Variable needed in callback fun 
injected.
        if(a > b)
          c = a + b
          res = c + z # Callback function has been injected.
          return res + 1
        else
          # do anything
          # but return nothing
        end
      end


      function1(a, b, z)

In OO languages we would be using an abstract class or its equivalent.  But 
I've thought about it, and read the discussions on interfaces, and don't 
see those solutions optimizing the code out like I did above.

Any ideas?

Reply via email to