The idea behind this mod is that you can have more flexibility using existing commands through one simple feature: Variables.
Using /var, you would be able to define a variable, optionally specifying a type (which comes with type safety, but as mentioned it's optional). Each variable would be able to hold a double (floored if used as an integer), string, NBT, or resource (of the namespace:value kind). By putting an '$' before the name of a variable, the value would be filled in for the command. In the event you i.e. try to use NBT data where the command wants a number, the command would fail as though you manually typed in the bad value.
With variables, a natural extension would be to have functions using parameters. This would be done simply by putting the parameters after the standard /function call. Then you would use $PARAM1, $PARAM2, etc. to use those.