functionIdentifier
The superset of keywords permitted as function names. Includes all keywordIdentifiers plus the reserved words that are blocked as expression identifiers but allowed when naming functions.
Examples
Function named with a standard identifier
define function "Square"(x Integer) returns Integer: x * x
Function named with a keyword ('before')
define function "before"(dt DateTime, ref DateTime) returns Boolean: dt before ref
Function named with a keyword ('and')
define function "and"(a Boolean, b Boolean) returns Boolean: a and b
EBNF
functionIdentifier : 'after' | 'aggregate' | 'all' | 'and' | 'as' | 'asc' | 'ascending' | 'before' | 'between' | 'by' | 'called' | 'case' | 'cast' | 'code' | 'Code' | 'codesystem' | 'codesystems' | 'collapse' | 'concept' | 'Concept' | 'contains' | 'context' | 'convert' | 'date' | 'day' | 'days' | 'default' | 'define' | 'desc' | 'descending' | 'difference' | 'display' | 'distinct' | 'div' | 'duration' | 'during' | 'else' | 'end' | 'ends' | 'except' | 'exists' | 'expand' | 'false' | 'flatten' | 'fluent' | 'from' | 'function' | 'hour' | 'hours' | 'if' | 'implies' | 'in' | 'include' | 'includes' | 'included in' | 'intersect' | 'Interval' | 'is' | 'let' | 'library' | 'List' | 'maximum' | 'meets' | 'millisecond' | 'milliseconds' | 'minimum' | 'minute' | 'minutes' | 'mod' | 'month' | 'months' | 'not' | 'null' | 'occurs' | 'of' | 'or' | 'or after' | 'or before' | 'or less' | 'or more' | 'overlaps' | 'parameter' | 'per' | 'point' | 'predecessor' | 'private' | 'properly' | 'public' | 'return' | 'same' | 'singleton' | 'second' | 'seconds' | 'start' | 'starting' | 'starts' | 'sort' | 'successor' | 'such that' | 'then' | 'time' | 'timezone' | 'timezoneoffset' | 'to' | 'true' | 'Tuple' | 'union' | 'using' | 'valueset' | 'version' | 'week' | 'weeks' | 'where' | 'when' | 'width' | 'with' | 'within' | 'without' | 'xor' | 'year' | 'years' ;