don't think your reasoning is so well eaten.

doh, I'd understand gets as function if you could pass a param to it.
say gets($filepipe)

but, the thing between command/function separation most likely is:
if it has only one argument and it is not for quering data, there is no reason to make function.
with more params and the need to return something, makes a reasonable function.

well, as I type this, I see gets indeed might be function
also, memorising my TCL codes, there basically is no such thing as function or command.
well, differentiation between them.
all the stuff works the same, just as kixtart commands (with lots more optional params though)

download KiXnet