I am trying to do function composition in the Eiffel programming language. By function composition, I mean create a function that takes two functions f(x), g(x) and returns a function f(g(x)).
The problem is that inline agents do not have access to local values. In the code below, f and g are unknown identifiers within the agent.
comp (f: FUNCTION [INTEGER, INTEGER]; g: FUNCTION [INTEGER, INTEGER]) : FUNCTION [INTEGER, INTEGER]
do
Result := agent (x: INTEGER) : INTEGER do Result := f(g(x)) end
end
I suspect there might be some way to do it by using an agent which takes an integer and two function arguments, then passing f and g to that agent explicitly, but I am unsure.
If anyone could provide some insight, it would be greatly appreciated.