Я полагаю, что из-за проблем с переменной областью вы должны просто выбрать другое имя для своей новой функции. Вы также можете использовать анонимные функции вместо именованных определений.
function foo(t_val)
newf(x) = f(x, t_val)
derivative(newf, otherparams...)
end
С анонимными функциями,
function foo(t_val)
derivative(x -> f(x, t_val), otherparams...)
end
Вы также можете назначать анонимные функции переменным и использовать переменные в качестве функции.
function foo(t_val)
newf = x -> f(x, t_val)
derivative(newf, otherparams...)
end