A simple define (command) is the equivalent of a sub-routine that performs code and affects data for variables/list/tables that are set as Global inside its container, w/o returning ANY result at all per se = it is only a series of commands that repeat themselves.
The function version of the define, is a series of commands that will return ONE variable value, the one specified by the RETURN command within its code.
That makes it very useful.
Personally, I only use functions, even when there is no particular output that I need from the define, but at least I return a false/true value as a measure of the functions' ability to perform all the code it was supposed to.
Many people use a simple DEFINE (as a command) for a signup or signin/login to a site
I prefer to use a FUNCTION instead, that returns the true/false value, telling the calling main program that the function was able to execute correctly (logged in successfully, or created an account successfully, etc...)
Makes more sense now?