Overloading ()

Is this what you want? It sounds like it.

function (L::Lagrangian{F})(q::Vector{G}, v::Vector{G}) where {F<:Real, G<:Real}
	eval(L, q, v)
end

See Methods · The Julia Language