Built-in Functions (Not a Library)

L4 includes several built-in functions that are always available without importing any library. These are implemented in the compiler core.

For operators (arithmetic, comparison, boolean), see also Operators for precedence and usage details.

Type Coercion Builtins

Function Signature Description
TOSTRING NUMBER/BOOLEAN/DATE/TIME/DATETIME → STRING Convert to string representation
TONUMBER STRING → MAYBE NUMBER Parse string to number
TODATE STRING → MAYBE DATE Parse string to date
TOTIME STRING → MAYBE TIME Parse string to time
TODATETIME STRING → MAYBE DATETIME Parse string to datetime
TRUNC NUMBER, NUMBER → NUMBER Truncate decimal places
AS STRING value AS STRING Inline string conversion

Numeric Builtins

Function Signature Description
FLOOR NUMBER → NUMBER Round down to integer
CEILING NUMBER → NUMBER Round up to integer
ROUND NUMBER → NUMBER Round to nearest integer
EXPONENT NUMBER → NUMBER → NUMBER Exponentiation (base, power)
LN NUMBER → MAYBE NUMBER Natural logarithm
LOG10 NUMBER → MAYBE NUMBER Base-10 logarithm
SQRT NUMBER → MAYBE NUMBER Square root
SIN, COS, TAN NUMBER → MAYBE NUMBER Trigonometric functions (radians)
ASIN, ACOS, ATAN NUMBER → MAYBE NUMBER Inverse trigonometric functions

String Builtins

Function Signature Description
STRINGLENGTH STRING → NUMBER Length of string
SUBSTRING STRING → NUMBER → NUMBER → STRING Extract substring
TOUPPER STRING → STRING Convert to uppercase
TOLOWER STRING → STRING Convert to lowercase

Date Builtins

Function Signature Description
DATE_FROM_DMY NUMBER → NUMBER → NUMBER → DATE Construct DATE from day, month, year
DATE_FROM_SERIAL NUMBER → DATE Construct DATE from serial number
DATE_SERIAL DATE → NUMBER Get serial number from DATE
DATE_DAY DATE → NUMBER Extract day from DATE
DATE_MONTH DATE → NUMBER Extract month from DATE
DATE_YEAR DATE → NUMBER Extract year from DATE
TODAY DATE Current date (requires TIMEZONE IS)

Time Builtins

Function Signature Description
TIME_SERIAL TIME → NUMBER Get serial number (day fraction) from TIME
CURRENTTIME TIME Current local time (requires TIMEZONE IS)

DateTime Builtins

Function Signature Description
DATETIME_SERIAL DATETIME → NUMBER Get UTC serial number from DATETIME
NOW DATETIME Current date and time (defaults to UTC without TIMEZONE IS)

Timezone Builtins

Function Signature Description
TIMEZONE STRING Returns the document timezone string (requires TIMEZONE IS)
TIMEZONE IS declaration Top-level declaration setting the document timezone

Arithmetic Operators

These operators are always available without import.

Operator Text Alias Signature Description
+ PLUS NUMBER → NUMBER → NUMBER Addition
- MINUS NUMBER → NUMBER → NUMBER Subtraction
* TIMES NUMBER → NUMBER → NUMBER Multiplication
/ DIVIDED BY NUMBER → NUMBER → NUMBER Division
MODULO -- NUMBER → NUMBER → NUMBER Remainder
EXPONENT -- NUMBER → NUMBER → NUMBER Exponentiation
FLOOR -- NUMBER → NUMBER Round down to integer
CEILING -- NUMBER → NUMBER Round up to integer
TRUNC -- NUMBER → NUMBER Truncate toward zero

Comparison Operators

Operator Text Alias Signature Description
= EQUALS a → a → BOOLEAN Equality (not assignment)
> GREATER THAN a → a → BOOLEAN Greater than
< LESS THAN a → a → BOOLEAN Less than
>= AT LEAST a → a → BOOLEAN Greater than or equal
<= AT MOST a → a → BOOLEAN Less than or equal

Note: = is equality, NOT assignment. L4 has no assignment (pure functional).

Boolean Operators

Operator Symbol Alias Precedence Description
NOT -- Highest Logical negation
AND && High Logical and
OR || Medium Logical or
IMPLIES => Lowest Logical implication
UNLESS -- = AND NOT Shorthand for AND NOT

String Operations

Function Signature Description
CONCAT x, y, ... STRING → ... → STRING Concatenate multiple strings
CONTAINS STRING → STRING → BOOLEAN Substring test
STARTS WITH STRING → STRING → BOOLEAN Prefix test
ENDS WITH STRING → STRING → BOOLEAN Suffix test
INDEXOF STRING → STRING → NUMBER Find position of substring
SPLIT STRING → STRING → LIST OF STRING Split by delimiter
CHARAT STRING → NUMBER → STRING Character at index
SUBSTRING STRING → NUMBER → NUMBER → STRING Substring (str, start, length)
STRINGLENGTH STRING → NUMBER String length
TOUPPER STRING → STRING Convert to uppercase
TOLOWER STRING → STRING Convert to lowercase

List Construction

Syntax Description
LIST x, y, z Literal list
EMPTY Empty list
x FOLLOWED BY xs Cons (prepend)

Nullary Builtins

Function Type Description
TODAY DATE Current date in document timezone
TIMEZONE STRING Document timezone (IANA name)

HTTP and JSON Builtins

Function Signature Description
FETCH STRING → STRING HTTP GET request
POST STRING, STRING, STRING → STRING HTTP POST request
ENV STRING → STRING Read environment variable
JSONENCODE a → STRING Convert value to JSON string
JSONDECODE STRING → EITHER STRING a Parse JSON string to value

For detailed HTTP/JSON documentation, see HTTP and JSON.

For detailed coercion documentation, see Coercions.