Tenho uma função simples que é então definida como uma lista e invocada como uma lista:
f:{x*x}
q)(f; neg)[1; 2]
-2
q)(f; neg)[1; 3]
-3
q)(f; neg)[2; 3]
3
q)(f; neg)[4; 3]
3
para (f; neg)[1; 3] - ele retorna o mais à direita como neg (-3), mas então ele não retorna mais neg, pois o primeiro argumento se torna > 1, por exemplo: (f; neg)[2; 3] -> retorna 3