Standard Library
hex comes with a standard library providing common functionality implemented in hex itself.
At present, it only comprises utils.hex, a collection of common utility symbols, which is distributed
in .hbx
format along with the hex executable.
To pre-load this file, you can start hex like this:
hex -l utils.hbx
Standard Utilities (utils.hex)
This file contains a collection of standardized utility symbols extending the native symbols of the hex programming language.
Input/Output Symbols↑
These additional symbols are used for input and output operations.
dputs
Symbol↑
a → a
Duplicates and prints the top item on the stack followed by a new line.
Control Flow Symbols↑
These symbols are used for controlling the flow of execution in a program.
unless
Symbol↑
q1 q2 → *
If q1
pushes 0x0 on the stack, dequotes q2
.
when
Symbol↑
q1 q2 → *
If q1
pushes 0x1 on the stack, dequotes q2
.
Quotation Symbols↑
These additional symbols are used for manipulating quotations.
cons
Symbol↑
a q1 → q2
Prepends a
to the beginning of q1
.
each
Symbol↑
q1 q2 → *
Applies q2
to each element of q1
.
filter
Symbol↑
q1 q2→ q3
Returns q3
containing only the elements of q1
that satisfy q2
.
max
Symbol↑
q → a
Pushes the maximum item of q on the stack.
min
Symbol↑
q → a
Pushes the minimum item of q on the stack.
pop
Symbol↑
q1 → q2
Removes the last item at the end of q1
.
push
Symbol↑
q1 a → q2
Appends a
to the end of q1
.
rem
Symbol↑
q1 i → q2
Removes the item at index i
of q1
.
reverse
Symbol↑
q1 → q2
Reverses the order of the items in a quotation.
set
Symbol↑
q1 a i → q2
Sets the item at index i
of q1
to a
.
sort
Symbol↑
q1 q2 → q3
Sorts the items of q1 based on the comparison quotation q2 (must push 0x0 or 0x1 on the stack).
swons
Symbol↑
q1 a → q2
Prepends a
to the beginning of q1
.
times
Symbol↑
q i → *
Execute quotation q
i
times.
uncons
Symbol↑
q1 → a q2
Removes the first item from q1
and pushes it on the stack along with q2
containing the rest of the items of q1
.
unswons
Symbol↑
q1 → q2 a
Removes the first item from q1
and pushes it on the stack along with q2
containing the rest of the items of q1
.
Stack Management Symbols↑
These additional symbols are used for manipulating the stack.
dip
Symbol↑
a1 (a2) → a2 a1
Dequotes the first item on the stack and restores the second item on top.
over
Symbol↑
a1 a2 → a1 a2 a1
Copies the second item on the stack and pushes it on top
String Symbols↑
These additional symbols are used for manipulating strings.
begins
Symbol↑
s1 s2 → s3
Pushes 0x1 on the stack if s1
begins with s2
, or 0x0 otherwise.
ends
Symbol↑
s1 s2 → s3
Pushes 0x1 on the stack if s1
ends with s2
, or 0x0 otherwise.
fmt
Symbol↑
s1 q → s2
Substitutes ${0}
to ${9} placeholders in s1
with items in q
.
gsub
Symbol↑
s1 s2 s3 → s4
Replaces all occurrences of s2
with s3 in s1
.
slice
Symbol↑
s1 i1 i2 → s2
Extracts the portion of the string between indices i1
and i2
.