For questions on writing functions (pure or using
SetDelayed) for any purpose, including the features that may be incorporated in those functions, such as options, patterns and conditions.
For questions about built-in functions, please use the tag functions. Pure functions should be under functional-style. Issues of syntax, options, patterns and argument-holding should use the respective tag: syntax, options, pattern-matching or evaluation (or attributes).