Now what about the evaluation of parameters? Assuming 'alias' will be treated as a command here, should it evaluate the parameters being passed to it or just leave them 'as is', except maybe the pipe separator?
If the developer chooses the first option, it will be such a pain to write those aliases, endlessly calculating how would they look after getting "compiled".
And if he chooses the other way, how would we build a static alias out of dynamically stored commands?