Function with other function as argument and other functions as output



Dear Sir/Madam,

I would like to creat a function with other function as argument, example:

test(x(t)):=block([VelocidadeInst(t),VelocidadeEsc(t),T(t),vector_unit(u)],
                 define(VelocidadeInst(t), diff(x, t)),
                 define(VelocidadeEsc(t), 
sqrt(VelocidadeInst(t).VelocidadeInst(t))),
                 vetor_unit(u):=((1/(sqrt(u.u)))*u),
                 T(t):=''(vetor_unit(VelocidadeInst(t))));

where x(t) could be something like: x(t):=[t,cos(t)], so when I ran the 
function test(x(t)) it should return the functions: 
VelocidadeInst(t),VelocidadeEsc(t) and T(t), instead of "define: in 
definition of test, found bad argument x(t)".

Thank you,
Yours faithfully,
Miguel Marinho