aboutsummaryrefslogtreecommitdiff
path: root/man
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2025-12-11 13:50:01 -0500
committerBruce Hill <bruce@bruce-hill.com>2025-12-11 13:52:46 -0500
commit7f8f2117799cdfa6b62909a9182b5adade1d0bd2 (patch)
tree1db466db870768e952f50572453660e090e434e0 /man
parent630f910563b6f27dd34a4a0496a43d32539eadcb (diff)
parent02886fab651d3f64d2c8ded5597e6c075dc69b5f (diff)
Merge branch 'dev' into constructive-reals
Diffstat (limited to 'man')
-rw-r--r--man/man3/tomo-Bool.319
-rw-r--r--man/man3/tomo-Bool.parse.34
-rw-r--r--man/man3/tomo-Byte.351
-rw-r--r--man/man3/tomo-Byte.get_bit.314
-rw-r--r--man/man3/tomo-Byte.hex.36
-rw-r--r--man/man3/tomo-Byte.is_between.316
-rw-r--r--man/man3/tomo-Byte.parse.34
-rw-r--r--man/man3/tomo-Byte.to.36
-rw-r--r--man/man3/tomo-CString.327
-rw-r--r--man/man3/tomo-CString.as_text.312
-rw-r--r--man/man3/tomo-CString.join.314
-rw-r--r--man/man3/tomo-Float64.1_PI.34
-rw-r--r--man/man3/tomo-Float64.2_PI.34
-rw-r--r--man/man3/tomo-Float64.2_SQRTPI.34
-rw-r--r--man/man3/tomo-Float64.3523
-rw-r--r--man/man3/tomo-Float64.E.34
-rw-r--r--man/man3/tomo-Float64.INF.34
-rw-r--r--man/man3/tomo-Float64.LN10.34
-rw-r--r--man/man3/tomo-Float64.LN2.34
-rw-r--r--man/man3/tomo-Float64.LOG2E.34
-rw-r--r--man/man3/tomo-Float64.PI.34
-rw-r--r--man/man3/tomo-Float64.PI_2.34
-rw-r--r--man/man3/tomo-Float64.PI_4.34
-rw-r--r--man/man3/tomo-Float64.SQRT1_2.34
-rw-r--r--man/man3/tomo-Float64.SQRT2.34
-rw-r--r--man/man3/tomo-Float64.TAU.34
-rw-r--r--man/man3/tomo-Float64.abs.312
-rw-r--r--man/man3/tomo-Float64.acos.312
-rw-r--r--man/man3/tomo-Float64.acosh.312
-rw-r--r--man/man3/tomo-Float64.asin.312
-rw-r--r--man/man3/tomo-Float64.asinh.312
-rw-r--r--man/man3/tomo-Float64.atan.312
-rw-r--r--man/man3/tomo-Float64.atan2.314
-rw-r--r--man/man3/tomo-Float64.atanh.312
-rw-r--r--man/man3/tomo-Float64.cbrt.312
-rw-r--r--man/man3/tomo-Float64.ceil.312
-rw-r--r--man/man3/tomo-Float64.clamped.316
-rw-r--r--man/man3/tomo-Float64.copysign.314
-rw-r--r--man/man3/tomo-Float64.cos.312
-rw-r--r--man/man3/tomo-Float64.cosh.312
-rw-r--r--man/man3/tomo-Float64.erf.312
-rw-r--r--man/man3/tomo-Float64.erfc.312
-rw-r--r--man/man3/tomo-Float64.exp.312
-rw-r--r--man/man3/tomo-Float64.exp2.312
-rw-r--r--man/man3/tomo-Float64.expm1.312
-rw-r--r--man/man3/tomo-Float64.fdim.314
-rw-r--r--man/man3/tomo-Float64.floor.312
-rw-r--r--man/man3/tomo-Float64.hypot.314
-rw-r--r--man/man3/tomo-Float64.is_between.316
-rw-r--r--man/man3/tomo-Float64.isfinite.312
-rw-r--r--man/man3/tomo-Float64.isinf.312
-rw-r--r--man/man3/tomo-Float64.j0.312
-rw-r--r--man/man3/tomo-Float64.j1.312
-rw-r--r--man/man3/tomo-Float64.log.312
-rw-r--r--man/man3/tomo-Float64.log10.312
-rw-r--r--man/man3/tomo-Float64.log1p.312
-rw-r--r--man/man3/tomo-Float64.log2.312
-rw-r--r--man/man3/tomo-Float64.logb.312
-rw-r--r--man/man3/tomo-Float64.mix.316
-rw-r--r--man/man3/tomo-Float64.near.38
-rw-r--r--man/man3/tomo-Float64.nextafter.314
-rw-r--r--man/man3/tomo-Float64.parse.34
-rw-r--r--man/man3/tomo-Float64.percent.34
-rw-r--r--man/man3/tomo-Float64.rint.312
-rw-r--r--man/man3/tomo-Float64.round.312
-rw-r--r--man/man3/tomo-Float64.significand.312
-rw-r--r--man/man3/tomo-Float64.sin.312
-rw-r--r--man/man3/tomo-Float64.sinh.312
-rw-r--r--man/man3/tomo-Float64.sqrt.312
-rw-r--r--man/man3/tomo-Float64.tan.312
-rw-r--r--man/man3/tomo-Float64.tanh.312
-rw-r--r--man/man3/tomo-Float64.tgamma.312
-rw-r--r--man/man3/tomo-Float64.trunc.312
-rw-r--r--man/man3/tomo-Float64.with_precision.314
-rw-r--r--man/man3/tomo-Float64.y0.312
-rw-r--r--man/man3/tomo-Float64.y1.312
-rw-r--r--man/man3/tomo-Int.3131
-rw-r--r--man/man3/tomo-Int.abs.312
-rw-r--r--man/man3/tomo-Int.choose.314
-rw-r--r--man/man3/tomo-Int.clamped.316
-rw-r--r--man/man3/tomo-Int.factorial.312
-rw-r--r--man/man3/tomo-Int.get_bit.314
-rw-r--r--man/man3/tomo-Int.hex.34
-rw-r--r--man/man3/tomo-Int.is_between.316
-rw-r--r--man/man3/tomo-Int.is_prime.34
-rw-r--r--man/man3/tomo-Int.next_prime.312
-rw-r--r--man/man3/tomo-Int.octal.34
-rw-r--r--man/man3/tomo-Int.onward.34
-rw-r--r--man/man3/tomo-Int.parse.310
-rw-r--r--man/man3/tomo-Int.prev_prime.312
-rw-r--r--man/man3/tomo-Int.sqrt.312
-rw-r--r--man/man3/tomo-Int.to.36
-rw-r--r--man/man3/tomo-List.3219
-rw-r--r--man/man3/tomo-List.binary_search.34
-rw-r--r--man/man3/tomo-List.by.314
-rw-r--r--man/man3/tomo-List.clear.312
-rw-r--r--man/man3/tomo-List.counts.312
-rw-r--r--man/man3/tomo-List.find.314
-rw-r--r--man/man3/tomo-List.from.314
-rw-r--r--man/man3/tomo-List.has.314
-rw-r--r--man/man3/tomo-List.heap_pop.34
-rw-r--r--man/man3/tomo-List.heap_push.34
-rw-r--r--man/man3/tomo-List.heapify.34
-rw-r--r--man/man3/tomo-List.insert.34
-rw-r--r--man/man3/tomo-List.insert_all.34
-rw-r--r--man/man3/tomo-List.pop.34
-rw-r--r--man/man3/tomo-List.random.36
-rw-r--r--man/man3/tomo-List.remove_at.34
-rw-r--r--man/man3/tomo-List.remove_item.34
-rw-r--r--man/man3/tomo-List.reversed.312
-rw-r--r--man/man3/tomo-List.sample.36
-rw-r--r--man/man3/tomo-List.shuffle.36
-rw-r--r--man/man3/tomo-List.shuffled.36
-rw-r--r--man/man3/tomo-List.slice.316
-rw-r--r--man/man3/tomo-List.sort.34
-rw-r--r--man/man3/tomo-List.sorted.34
-rw-r--r--man/man3/tomo-List.to.314
-rw-r--r--man/man3/tomo-List.unique.312
-rw-r--r--man/man3/tomo-List.where.314
-rw-r--r--man/man3/tomo-Path.3347
-rw-r--r--man/man3/tomo-Path.accessed.34
-rw-r--r--man/man3/tomo-Path.append.310
-rw-r--r--man/man3/tomo-Path.append_bytes.310
-rw-r--r--man/man3/tomo-Path.base_name.312
-rw-r--r--man/man3/tomo-Path.by_line.320
-rw-r--r--man/man3/tomo-Path.can_execute.312
-rw-r--r--man/man3/tomo-Path.can_read.312
-rw-r--r--man/man3/tomo-Path.can_write.312
-rw-r--r--man/man3/tomo-Path.changed.34
-rw-r--r--man/man3/tomo-Path.child.314
-rw-r--r--man/man3/tomo-Path.children.36
-rw-r--r--man/man3/tomo-Path.create_directory.311
-rw-r--r--man/man3/tomo-Path.current_dir.34
-rw-r--r--man/man3/tomo-Path.exists.312
-rw-r--r--man/man3/tomo-Path.expand_home.312
-rw-r--r--man/man3/tomo-Path.extension.36
-rw-r--r--man/man3/tomo-Path.files.34
-rw-r--r--man/man3/tomo-Path.from_components.312
-rw-r--r--man/man3/tomo-Path.glob.312
-rw-r--r--man/man3/tomo-Path.group.34
-rw-r--r--man/man3/tomo-Path.has_extension.314
-rw-r--r--man/man3/tomo-Path.is_directory.34
-rw-r--r--man/man3/tomo-Path.is_file.34
-rw-r--r--man/man3/tomo-Path.is_socket.34
-rw-r--r--man/man3/tomo-Path.is_symlink.312
-rw-r--r--man/man3/tomo-Path.lines.335
-rw-r--r--man/man3/tomo-Path.modified.34
-rw-r--r--man/man3/tomo-Path.owner.34
-rw-r--r--man/man3/tomo-Path.parent.316
-rw-r--r--man/man3/tomo-Path.read.312
-rw-r--r--man/man3/tomo-Path.read_bytes.34
-rw-r--r--man/man3/tomo-Path.relative_to.39
-rw-r--r--man/man3/tomo-Path.remove.38
-rw-r--r--man/man3/tomo-Path.resolved.34
-rw-r--r--man/man3/tomo-Path.set_owner.38
-rw-r--r--man/man3/tomo-Path.sibling.314
-rw-r--r--man/man3/tomo-Path.subdirectories.34
-rw-r--r--man/man3/tomo-Path.unique_directory.312
-rw-r--r--man/man3/tomo-Path.write.38
-rw-r--r--man/man3/tomo-Path.write_bytes.38
-rw-r--r--man/man3/tomo-Path.write_unique.314
-rw-r--r--man/man3/tomo-Path.write_unique_bytes.314
-rw-r--r--man/man3/tomo-Table.399
-rw-r--r--man/man3/tomo-Table.clear.312
-rw-r--r--man/man3/tomo-Table.difference.314
-rw-r--r--man/man3/tomo-Table.get.314
-rw-r--r--man/man3/tomo-Table.get_or_set.316
-rw-r--r--man/man3/tomo-Table.has.314
-rw-r--r--man/man3/tomo-Table.intersection.314
-rw-r--r--man/man3/tomo-Table.remove.314
-rw-r--r--man/man3/tomo-Table.set.316
-rw-r--r--man/man3/tomo-Table.with.314
-rw-r--r--man/man3/tomo-Table.with_fallback.314
-rw-r--r--man/man3/tomo-Table.without.314
-rw-r--r--man/man3/tomo-Text.3339
-rw-r--r--man/man3/tomo-Text.as_c_string.312
-rw-r--r--man/man3/tomo-Text.at.314
-rw-r--r--man/man3/tomo-Text.by_line.312
-rw-r--r--man/man3/tomo-Text.by_split.34
-rw-r--r--man/man3/tomo-Text.by_split_any.34
-rw-r--r--man/man3/tomo-Text.caseless_equals.34
-rw-r--r--man/man3/tomo-Text.codepoint_names.312
-rw-r--r--man/man3/tomo-Text.ends_with.34
-rw-r--r--man/man3/tomo-Text.find.340
-rw-r--r--man/man3/tomo-Text.from.314
-rw-r--r--man/man3/tomo-Text.from_c_string.312
-rw-r--r--man/man3/tomo-Text.from_codepoint_names.312
-rw-r--r--man/man3/tomo-Text.from_utf16.312
-rw-r--r--man/man3/tomo-Text.from_utf32.312
-rw-r--r--man/man3/tomo-Text.from_utf8.312
-rw-r--r--man/man3/tomo-Text.has.314
-rw-r--r--man/man3/tomo-Text.join.314
-rw-r--r--man/man3/tomo-Text.left_pad.34
-rw-r--r--man/man3/tomo-Text.lines.312
-rw-r--r--man/man3/tomo-Text.lower.34
-rw-r--r--man/man3/tomo-Text.middle_pad.34
-rw-r--r--man/man3/tomo-Text.quoted.34
-rw-r--r--man/man3/tomo-Text.repeat.314
-rw-r--r--man/man3/tomo-Text.replace.316
-rw-r--r--man/man3/tomo-Text.reversed.312
-rw-r--r--man/man3/tomo-Text.right_pad.34
-rw-r--r--man/man3/tomo-Text.slice.34
-rw-r--r--man/man3/tomo-Text.split.34
-rw-r--r--man/man3/tomo-Text.split_any.34
-rw-r--r--man/man3/tomo-Text.starts_with.34
-rw-r--r--man/man3/tomo-Text.title.34
-rw-r--r--man/man3/tomo-Text.to.314
-rw-r--r--man/man3/tomo-Text.translate.314
-rw-r--r--man/man3/tomo-Text.trim.34
-rw-r--r--man/man3/tomo-Text.upper.34
-rw-r--r--man/man3/tomo-Text.utf16.312
-rw-r--r--man/man3/tomo-Text.utf32.312
-rw-r--r--man/man3/tomo-Text.utf8.312
-rw-r--r--man/man3/tomo-Text.width.312
-rw-r--r--man/man3/tomo-Text.without_prefix.314
-rw-r--r--man/man3/tomo-Text.without_suffix.314
-rw-r--r--man/man3/tomo-ask.32
-rw-r--r--man/man3/tomo-at_cleanup.338
-rw-r--r--man/man3/tomo-exit.34
-rw-r--r--man/man3/tomo-fail.310
-rw-r--r--man/man3/tomo-getenv.310
-rw-r--r--man/man3/tomo-print.32
-rw-r--r--man/man3/tomo-say.32
-rw-r--r--man/man3/tomo-setenv.314
-rw-r--r--man/man3/tomo-sleep.310
225 files changed, 3108 insertions, 822 deletions
diff --git a/man/man3/tomo-Bool.3 b/man/man3/tomo-Bool.3
new file mode 100644
index 00000000..dd090c86
--- /dev/null
+++ b/man/man3/tomo-Bool.3
@@ -0,0 +1,19 @@
+'\" t
+.\" Copyright (c) 2025 Bruce Hill
+.\" All rights reserved.
+.\"
+.TH Bool 3 2025-11-29 "Tomo man-pages"
+.SH NAME
+Bool \- a Tomo type
+.SH LIBRARY
+Tomo Standard Library
+.fi
+.SH METHODS
+
+.TP
+.BI Bool.parse\ :\ func(text:\ Text,\ remainder:\ &Text?\ =\ none\ ->\ Bool?)
+Converts a text representation of a boolean value into a boolean. Acceptable boolean values are case-insensitive variations of \fByes\fR/\fBno\fR, \fBy\fR/\fBn\fR, \fBtrue\fR/\fBfalse\fR, \fBon\fR/\fBoff\fR.
+
+For more, see:
+.BR Tomo-Bool.parse (3)
+
diff --git a/man/man3/tomo-Bool.parse.3 b/man/man3/tomo-Bool.parse.3
index 516d499f..af2e3f67 100644
--- a/man/man3/tomo-Bool.parse.3
+++ b/man/man3/tomo-Bool.parse.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Bool.parse 3 2025-11-09 "Tomo man-pages"
+.TH Bool.parse 3 2025-11-29 "Tomo man-pages"
.SH NAME
Bool.parse \- parse into boolean
.SH LIBRARY
@@ -39,3 +39,5 @@ remainder : Text
assert Bool.parse("yesJUNK", &remainder) == yes
assert remainder == "JUNK"
.EE
+.SH SEE ALSO
+.BR Tomo-Bool (3)
diff --git a/man/man3/tomo-Byte.3 b/man/man3/tomo-Byte.3
new file mode 100644
index 00000000..94ec4213
--- /dev/null
+++ b/man/man3/tomo-Byte.3
@@ -0,0 +1,51 @@
+'\" t
+.\" Copyright (c) 2025 Bruce Hill
+.\" All rights reserved.
+.\"
+.TH Byte 3 2025-11-29 "Tomo man-pages"
+.SH NAME
+Byte \- a Tomo type
+.SH LIBRARY
+Tomo Standard Library
+.fi
+.SH METHODS
+
+.TP
+.BI Byte.get_bit\ :\ func(i:\ Byte,\ bit_index:\ Int\ ->\ Bool)
+In the binary representation of a byte, check whether a given bit index is set to 1 or not.
+
+For more, see:
+.BR Tomo-Byte.get_bit (3)
+
+
+.TP
+.BI Byte.hex\ :\ func(byte:\ Byte,\ uppercase:\ Bool\ =\ yes,\ prefix:\ Bool\ =\ no\ ->\ Text)
+Convert a byte to a hexidecimal text representation.
+
+For more, see:
+.BR Tomo-Byte.hex (3)
+
+
+.TP
+.BI Byte.is_between\ :\ func(x:\ Byte,\ low:\ Byte,\ high:\ Byte\ ->\ Bool)
+Determines if an integer is between two numbers (inclusive).
+
+For more, see:
+.BR Tomo-Byte.is_between (3)
+
+
+.TP
+.BI Byte.parse\ :\ func(text:\ Text,\ remainder:\ &Text?\ =\ none\ ->\ Byte?)
+Parse a byte literal from text.
+
+For more, see:
+.BR Tomo-Byte.parse (3)
+
+
+.TP
+.BI Byte.to\ :\ func(first:\ Byte,\ last:\ Byte,\ step:\ Byte?\ =\ none\ ->\ func(->Byte?))
+Returns an iterator function that iterates over the range of bytes specified.
+
+For more, see:
+.BR Tomo-Byte.to (3)
+
diff --git a/man/man3/tomo-Byte.get_bit.3 b/man/man3/tomo-Byte.get_bit.3
index 0007b5ad..ad92560e 100644
--- a/man/man3/tomo-Byte.get_bit.3
+++ b/man/man3/tomo-Byte.get_bit.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Byte.get_bit 3 2025-11-09 "Tomo man-pages"
+.TH Byte.get_bit 3 2025-11-29 "Tomo man-pages"
.SH NAME
Byte.get_bit \- check whether a bit is set
.SH LIBRARY
@@ -19,11 +19,11 @@ In the binary representation of a byte, check whether a given bit index is set t
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-i Byte The byte whose bits are being inspected. -
-bit_index Int The index of the bit to check (1-indexed, range 1-8). -
+lb lb lbx
+l l l.
+Name Type Description
+i Byte The byte whose bits are being inspected.
+bit_index Int The index of the bit to check (1-indexed, range 1-8).
.TE
.SH RETURN
Whether or not the given bit index is set to 1 in the byte.
@@ -38,3 +38,5 @@ assert Byte(6).get_bit(2) == yes
assert Byte(6).get_bit(3) == yes
assert Byte(6).get_bit(4) == no
.EE
+.SH SEE ALSO
+.BR Tomo-Byte (3)
diff --git a/man/man3/tomo-Byte.hex.3 b/man/man3/tomo-Byte.hex.3
index ab35f5bb..35f6c001 100644
--- a/man/man3/tomo-Byte.hex.3
+++ b/man/man3/tomo-Byte.hex.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Byte.hex 3 2025-11-09 "Tomo man-pages"
+.TH Byte.hex 3 2025-11-29 "Tomo man-pages"
.SH NAME
Byte.hex \- convert to hexidecimal
.SH LIBRARY
@@ -24,7 +24,7 @@ l l l l.
Name Type Description Default
byte Byte The byte to convert to hex. -
uppercase Bool Whether or not to use uppercase hexidecimal letters. yes
-prefix Bool Whether or not to prepend a `0x` prefix. no
+prefix Bool Whether or not to prepend a \fB0x\fR prefix. no
.TE
.SH RETURN
The byte as a hexidecimal text.
@@ -33,3 +33,5 @@ The byte as a hexidecimal text.
.EX
assert Byte(18).hex() == "0x12"
.EE
+.SH SEE ALSO
+.BR Tomo-Byte (3)
diff --git a/man/man3/tomo-Byte.is_between.3 b/man/man3/tomo-Byte.is_between.3
index 3fae008f..06e53fb0 100644
--- a/man/man3/tomo-Byte.is_between.3
+++ b/man/man3/tomo-Byte.is_between.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Byte.is_between 3 2025-11-09 "Tomo man-pages"
+.TH Byte.is_between 3 2025-11-29 "Tomo man-pages"
.SH NAME
Byte.is_between \- test if inside a range
.SH LIBRARY
@@ -19,12 +19,12 @@ Determines if an integer is between two numbers (inclusive).
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Byte The integer to be checked. -
-low Byte The lower bound to check (inclusive). -
-high Byte The upper bound to check (inclusive). -
+lb lb lbx
+l l l.
+Name Type Description
+x Byte The integer to be checked.
+low Byte The lower bound to check (inclusive).
+high Byte The upper bound to check (inclusive).
.TE
.SH RETURN
`yes` if `low <= x and x <= high`, otherwise `no`
@@ -35,3 +35,5 @@ assert Byte(7).is_between(1, 10) == yes
assert Byte(7).is_between(100, 200) == no
assert Byte(7).is_between(1, 7) == yes
.EE
+.SH SEE ALSO
+.BR Tomo-Byte (3)
diff --git a/man/man3/tomo-Byte.parse.3 b/man/man3/tomo-Byte.parse.3
index cb7fb2e0..fcc7e75e 100644
--- a/man/man3/tomo-Byte.parse.3
+++ b/man/man3/tomo-Byte.parse.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Byte.parse 3 2025-11-09 "Tomo man-pages"
+.TH Byte.parse 3 2025-11-29 "Tomo man-pages"
.SH NAME
Byte.parse \- convert text to a byte
.SH LIBRARY
@@ -38,3 +38,5 @@ remainder : Text
assert Byte.parse("123xyz", &remainder) == Byte(123)
assert remainder == "xyz"
.EE
+.SH SEE ALSO
+.BR Tomo-Byte (3)
diff --git a/man/man3/tomo-Byte.to.3 b/man/man3/tomo-Byte.to.3
index d98e25dd..39946e8d 100644
--- a/man/man3/tomo-Byte.to.3
+++ b/man/man3/tomo-Byte.to.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Byte.to 3 2025-11-09 "Tomo man-pages"
+.TH Byte.to 3 2025-11-29 "Tomo man-pages"
.SH NAME
Byte.to \- iterate over a range of bytes
.SH LIBRARY
@@ -24,7 +24,7 @@ l l l l.
Name Type Description Default
first Byte The starting value of the range. -
last Byte The ending value of the range. -
-step Byte? An optional step size to use. If unspecified or `none`, the step will be inferred to be `+1` if `last >= first`, otherwise `-1`. none
+step Byte? An optional step size to use. If unspecified or \fBnone\fR, the step will be inferred to be \fB+1\fR if \fBlast >= first\fR, otherwise \fB-1\fR. none
.TE
.SH RETURN
An iterator function that returns each byte in the given range (inclusive).
@@ -41,3 +41,5 @@ assert [x for x in Byte(2).to(5)] == [Byte(2), Byte(3), Byte(4), Byte(5)]
assert [x for x in Byte(5).to(2)] == [Byte(5), Byte(4), Byte(3), Byte(2)]
assert [x for x in Byte(2).to(5, step=2)] == [Byte(2), Byte(4)]
.EE
+.SH SEE ALSO
+.BR Tomo-Byte (3)
diff --git a/man/man3/tomo-CString.3 b/man/man3/tomo-CString.3
new file mode 100644
index 00000000..dac93133
--- /dev/null
+++ b/man/man3/tomo-CString.3
@@ -0,0 +1,27 @@
+'\" t
+.\" Copyright (c) 2025 Bruce Hill
+.\" All rights reserved.
+.\"
+.TH CString 3 2025-11-29 "Tomo man-pages"
+.SH NAME
+CString \- a Tomo type
+.SH LIBRARY
+Tomo Standard Library
+.fi
+.SH METHODS
+
+.TP
+.BI CString.as_text\ :\ func(str:\ CString\ ->\ Text)
+Convert a C string to Text.
+
+For more, see:
+.BR Tomo-CString.as_text (3)
+
+
+.TP
+.BI CString.join\ :\ func(glue:\ CString,\ pieces:\ [CString]\ ->\ CString)
+Join a list of C strings together with a separator.
+
+For more, see:
+.BR Tomo-CString.join (3)
+
diff --git a/man/man3/tomo-CString.as_text.3 b/man/man3/tomo-CString.as_text.3
index 0332c166..b9a8db95 100644
--- a/man/man3/tomo-CString.as_text.3
+++ b/man/man3/tomo-CString.as_text.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH CString.as_text 3 2025-11-09 "Tomo man-pages"
+.TH CString.as_text 3 2025-11-29 "Tomo man-pages"
.SH NAME
CString.as_text \- convert a C string to Text
.SH LIBRARY
@@ -19,10 +19,10 @@ Convert a C string to Text.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-str CString The C string. -
+lb lb lbx
+l l l.
+Name Type Description
+str CString The C string.
.TE
.SH RETURN
The C string as a Text.
@@ -31,3 +31,5 @@ The C string as a Text.
.EX
assert CString("Hello").as_text() == "Hello"
.EE
+.SH SEE ALSO
+.BR Tomo-CString (3)
diff --git a/man/man3/tomo-CString.join.3 b/man/man3/tomo-CString.join.3
index 70eb3d72..c44df80d 100644
--- a/man/man3/tomo-CString.join.3
+++ b/man/man3/tomo-CString.join.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH CString.join 3 2025-11-09 "Tomo man-pages"
+.TH CString.join 3 2025-11-29 "Tomo man-pages"
.SH NAME
CString.join \- join a list of C strings
.SH LIBRARY
@@ -19,11 +19,11 @@ Join a list of C strings together with a separator.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-glue CString The C joiner used to between elements. -
-pieces [CString] A list of C strings to join. -
+lb lb lbx
+l l l.
+Name Type Description
+glue CString The C joiner used to between elements.
+pieces [CString] A list of C strings to join.
.TE
.SH RETURN
A C string of the joined together bits.
@@ -32,3 +32,5 @@ A C string of the joined together bits.
.EX
assert CString(",").join([CString("a"), CString("b")]) == CString("a,b")
.EE
+.SH SEE ALSO
+.BR Tomo-CString (3)
diff --git a/man/man3/tomo-Float64.1_PI.3 b/man/man3/tomo-Float64.1_PI.3
index c5b57ecf..67f6b16a 100644
--- a/man/man3/tomo-Float64.1_PI.3
+++ b/man/man3/tomo-Float64.1_PI.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.1_PI 3 2025-11-09 "Tomo man-pages"
+.TH Float64.1_PI 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.1_PI \- 1/pi
.SH LIBRARY
@@ -15,3 +15,5 @@ Tomo Standard Library
The constant $\frac{1}{\pi}$.
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.2_PI.3 b/man/man3/tomo-Float64.2_PI.3
index 7bc0e51d..5a9edc50 100644
--- a/man/man3/tomo-Float64.2_PI.3
+++ b/man/man3/tomo-Float64.2_PI.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.2_PI 3 2025-11-09 "Tomo man-pages"
+.TH Float64.2_PI 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.2_PI \- 2*pi
.SH LIBRARY
@@ -15,3 +15,5 @@ Tomo Standard Library
The constant $2 \times \pi$.
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.2_SQRTPI.3 b/man/man3/tomo-Float64.2_SQRTPI.3
index e54e565f..28d600ce 100644
--- a/man/man3/tomo-Float64.2_SQRTPI.3
+++ b/man/man3/tomo-Float64.2_SQRTPI.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.2_SQRTPI 3 2025-11-09 "Tomo man-pages"
+.TH Float64.2_SQRTPI 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.2_SQRTPI \- 2*sqrt(pi)
.SH LIBRARY
@@ -15,3 +15,5 @@ Tomo Standard Library
The constant $2 \times \sqrt{\pi}$.
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.3 b/man/man3/tomo-Float64.3
new file mode 100644
index 00000000..02bea385
--- /dev/null
+++ b/man/man3/tomo-Float64.3
@@ -0,0 +1,523 @@
+'\" t
+.\" Copyright (c) 2025 Bruce Hill
+.\" All rights reserved.
+.\"
+.TH Float64 3 2025-12-11 "Tomo man-pages"
+.SH NAME
+Float64 \- a Tomo type
+.SH LIBRARY
+Tomo Standard Library
+.fi
+.SH METHODS
+
+.TP
+.BI Float64.1_PI\ :\ Float64
+The constant $\frac{1}{\pi}$.
+
+For more, see:
+.BR Tomo-Float64.1_PI (3)
+
+
+.TP
+.BI Float64.2_PI\ :\ Float64
+The constant $2 \times \pi$.
+
+For more, see:
+.BR Tomo-Float64.2_PI (3)
+
+
+.TP
+.BI Float64.2_SQRTPI\ :\ Float64
+The constant $2 \times \sqrt{\pi}$.
+
+For more, see:
+.BR Tomo-Float64.2_SQRTPI (3)
+
+
+.TP
+.BI Float64.E\ :\ Float64
+The base of the natural logarithm ($e$).
+
+For more, see:
+.BR Tomo-Float64.E (3)
+
+
+.TP
+.BI Float64.INF\ :\ Float64
+Positive infinity.
+
+For more, see:
+.BR Tomo-Float64.INF (3)
+
+
+.TP
+.BI Float64.LN10\ :\ Float64
+The natural logarithm of 10.
+
+For more, see:
+.BR Tomo-Float64.LN10 (3)
+
+
+.TP
+.BI Float64.LN2\ :\ Float64
+The natural logarithm of 2.
+
+For more, see:
+.BR Tomo-Float64.LN2 (3)
+
+
+.TP
+.BI Float64.LOG2E\ :\ Float64
+The base 2 logarithm of $e$
+
+For more, see:
+.BR Tomo-Float64.LOG2E (3)
+
+
+.TP
+.BI Float64.PI\ :\ Float64
+Pi ($\pi$).
+
+For more, see:
+.BR Tomo-Float64.PI (3)
+
+
+.TP
+.BI Float64.PI_2\ :\ Float64
+$\frac{\pi}{2}$
+
+For more, see:
+.BR Tomo-Float64.PI_2 (3)
+
+
+.TP
+.BI Float64.PI_4\ :\ Float64
+$\frac{\pi}{4}$
+
+For more, see:
+.BR Tomo-Float64.PI_4 (3)
+
+
+.TP
+.BI Float64.SQRT1_2\ :\ Float64
+$\sqrt{\frac{1}{2}}$
+
+For more, see:
+.BR Tomo-Float64.SQRT1_2 (3)
+
+
+.TP
+.BI Float64.SQRT2\ :\ Float64
+$\sqrt{2}$
+
+For more, see:
+.BR Tomo-Float64.SQRT2 (3)
+
+
+.TP
+.BI Float64.TAU\ :\ Float64
+Tau ($2 \times \pi$)
+
+For more, see:
+.BR Tomo-Float64.TAU (3)
+
+
+.TP
+.BI Float64.abs\ :\ func(n:\ Float64\ ->\ Float64)
+Calculates the absolute value of a number.
+
+For more, see:
+.BR Tomo-Float64.abs (3)
+
+
+.TP
+.BI Float64.acos\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the arc cosine of a number.
+
+For more, see:
+.BR Tomo-Float64.acos (3)
+
+
+.TP
+.BI Float64.acosh\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the inverse hyperbolic cosine of a number.
+
+For more, see:
+.BR Tomo-Float64.acosh (3)
+
+
+.TP
+.BI Float64.asin\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the arc sine of a number.
+
+For more, see:
+.BR Tomo-Float64.asin (3)
+
+
+.TP
+.BI Float64.asinh\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the inverse hyperbolic sine of a number.
+
+For more, see:
+.BR Tomo-Float64.asinh (3)
+
+
+.TP
+.BI Float64.atan\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the arc tangent of a number.
+
+For more, see:
+.BR Tomo-Float64.atan (3)
+
+
+.TP
+.BI Float64.atan2\ :\ func(x:\ Float64,\ y:\ Float64\ ->\ Float64)
+Computes the arc tangent of the quotient of two numbers.
+
+For more, see:
+.BR Tomo-Float64.atan2 (3)
+
+
+.TP
+.BI Float64.atanh\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the inverse hyperbolic tangent of a number.
+
+For more, see:
+.BR Tomo-Float64.atanh (3)
+
+
+.TP
+.BI Float64.cbrt\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the cube root of a number.
+
+For more, see:
+.BR Tomo-Float64.cbrt (3)
+
+
+.TP
+.BI Float64.ceil\ :\ func(x:\ Float64\ ->\ Float64)
+Rounds a number up to the nearest integer.
+
+For more, see:
+.BR Tomo-Float64.ceil (3)
+
+
+.TP
+.BI Float64.clamped\ :\ func(x:\ Float64,\ low:\ Float64,\ high:\ Float64\ ->\ Float64)
+Returns the given number clamped between two values so that it is within that range.
+
+For more, see:
+.BR Tomo-Float64.clamped (3)
+
+
+.TP
+.BI Float64.copysign\ :\ func(x:\ Float64,\ y:\ Float64\ ->\ Float64)
+Copies the sign of one number to another.
+
+For more, see:
+.BR Tomo-Float64.copysign (3)
+
+
+.TP
+.BI Float64.cos\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the cosine of a number (angle in radians).
+
+For more, see:
+.BR Tomo-Float64.cos (3)
+
+
+.TP
+.BI Float64.cosh\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the hyperbolic cosine of a number.
+
+For more, see:
+.BR Tomo-Float64.cosh (3)
+
+
+.TP
+.BI Float64.erf\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the error function of a number.
+
+For more, see:
+.BR Tomo-Float64.erf (3)
+
+
+.TP
+.BI Float64.erfc\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the complementary error function of a number.
+
+For more, see:
+.BR Tomo-Float64.erfc (3)
+
+
+.TP
+.BI Float64.exp\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the exponential function $e^x$ for a number.
+
+For more, see:
+.BR Tomo-Float64.exp (3)
+
+
+.TP
+.BI Float64.exp2\ :\ func(x:\ Float64\ ->\ Float64)
+Computes $2^x$ for a number.
+
+For more, see:
+.BR Tomo-Float64.exp2 (3)
+
+
+.TP
+.BI Float64.expm1\ :\ func(x:\ Float64\ ->\ Float64)
+Computes $e^x - 1$ for a number.
+
+For more, see:
+.BR Tomo-Float64.expm1 (3)
+
+
+.TP
+.BI Float64.fdim\ :\ func(x:\ Float64,\ y:\ Float64\ ->\ Float64)
+Computes the positive difference between two numbers.
+
+For more, see:
+.BR Tomo-Float64.fdim (3)
+
+
+.TP
+.BI Float64.floor\ :\ func(x:\ Float64\ ->\ Float64)
+Rounds a number down to the nearest integer.
+
+For more, see:
+.BR Tomo-Float64.floor (3)
+
+
+.TP
+.BI Float64.hypot\ :\ func(x:\ Float64,\ y:\ Float64\ ->\ Float64)
+Computes the Euclidean norm, $\sqrt{x^2 + y^2}$, of two numbers.
+
+For more, see:
+.BR Tomo-Float64.hypot (3)
+
+
+.TP
+.BI Float64.is_between\ :\ func(x:\ Float64,\ low:\ Float64,\ high:\ Float64\ ->\ Bool)
+Determines if a number is between two numbers (inclusive).
+
+For more, see:
+.BR Tomo-Float64.is_between (3)
+
+
+.TP
+.BI Float64.isfinite\ :\ func(n:\ Float64\ ->\ Bool)
+Checks if a number is finite.
+
+For more, see:
+.BR Tomo-Float64.isfinite (3)
+
+
+.TP
+.BI Float64.isinf\ :\ func(n:\ Float64\ ->\ Bool)
+Checks if a number is infinite.
+
+For more, see:
+.BR Tomo-Float64.isinf (3)
+
+
+.TP
+.BI Float64.j0\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the Bessel function of the first kind of order 0.
+
+For more, see:
+.BR Tomo-Float64.j0 (3)
+
+
+.TP
+.BI Float64.j1\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the Bessel function of the first kind of order 1.
+
+For more, see:
+.BR Tomo-Float64.j1 (3)
+
+
+.TP
+.BI Float64.log\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the natural logarithm (base $e$) of a number.
+
+For more, see:
+.BR Tomo-Float64.log (3)
+
+
+.TP
+.BI Float64.log10\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the base-10 logarithm of a number.
+
+For more, see:
+.BR Tomo-Float64.log10 (3)
+
+
+.TP
+.BI Float64.log1p\ :\ func(x:\ Float64\ ->\ Float64)
+Computes $\log(1 + x)$ for a number.
+
+For more, see:
+.BR Tomo-Float64.log1p (3)
+
+
+.TP
+.BI Float64.log2\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the base-2 logarithm of a number.
+
+For more, see:
+.BR Tomo-Float64.log2 (3)
+
+
+.TP
+.BI Float64.logb\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the binary exponent (base-2 logarithm) of a number.
+
+For more, see:
+.BR Tomo-Float64.logb (3)
+
+
+.TP
+.BI Float64.mix\ :\ func(amount:\ Float64,\ x:\ Float64,\ y:\ Float64\ ->\ Float64)
+Interpolates between two numbers based on a given amount.
+
+For more, see:
+.BR Tomo-Float64.mix (3)
+
+
+.TP
+.BI Float64.near\ :\ func(x:\ Float64,\ y:\ Float64,\ ratio:\ Float64\ =\ 1e-9,\ min_epsilon:\ Float64\ =\ 1e-9\ ->\ Bool)
+Checks if two numbers are approximately equal within specified tolerances. If two numbers are within an absolute difference or the ratio between the two is small enough, they are considered near each other.
+
+For more, see:
+.BR Tomo-Float64.near (3)
+
+
+.TP
+.BI Float64.nextafter\ :\ func(x:\ Float64,\ y:\ Float64\ ->\ Float64)
+Computes the next representable value after a given number towards a specified direction.
+
+For more, see:
+.BR Tomo-Float64.nextafter (3)
+
+
+.TP
+.BI Float64.parse\ :\ func(text:\ Text,\ remainder:\ &Text?\ =\ none\ ->\ Float64?)
+Converts a text representation of a number into a floating-point number.
+
+For more, see:
+.BR Tomo-Float64.parse (3)
+
+
+.TP
+.BI Float64.percent\ :\ func(n:\ Float64,\ precision:\ Float64\ =\ 0.01\ ->\ Text)
+Convert a number into a percentage text with a percent sign.
+
+For more, see:
+.BR Tomo-Float64.percent (3)
+
+
+.TP
+.BI Float64.rint\ :\ func(x:\ Float64\ ->\ Float64)
+Rounds a number to the nearest integer, with ties rounded to the nearest even integer.
+
+For more, see:
+.BR Tomo-Float64.rint (3)
+
+
+.TP
+.BI Float64.round\ :\ func(x:\ Float64\ ->\ Float64)
+Rounds a number to the nearest whole number integer.
+
+For more, see:
+.BR Tomo-Float64.round (3)
+
+
+.TP
+.BI Float64.significand\ :\ func(x:\ Float64\ ->\ Float64)
+Extracts the significand (or mantissa) of a number.
+
+For more, see:
+.BR Tomo-Float64.significand (3)
+
+
+.TP
+.BI Float64.sin\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the sine of a number (angle in radians).
+
+For more, see:
+.BR Tomo-Float64.sin (3)
+
+
+.TP
+.BI Float64.sinh\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the hyperbolic sine of a number.
+
+For more, see:
+.BR Tomo-Float64.sinh (3)
+
+
+.TP
+.BI Float64.sqrt\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the square root of a number.
+
+For more, see:
+.BR Tomo-Float64.sqrt (3)
+
+
+.TP
+.BI Float64.tan\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the tangent of a number (angle in radians).
+
+For more, see:
+.BR Tomo-Float64.tan (3)
+
+
+.TP
+.BI Float64.tanh\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the hyperbolic tangent of a number.
+
+For more, see:
+.BR Tomo-Float64.tanh (3)
+
+
+.TP
+.BI Float64.tgamma\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the gamma function of a number.
+
+For more, see:
+.BR Tomo-Float64.tgamma (3)
+
+
+.TP
+.BI Float64.trunc\ :\ func(x:\ Float64\ ->\ Float64)
+Truncates a number to the nearest integer towards zero.
+
+For more, see:
+.BR Tomo-Float64.trunc (3)
+
+
+.TP
+.BI Float64.with_precision\ :\ func(n:\ Float64,\ precision:\ Float64\ ->\ Float64)
+Round a number to the given precision level (specified as \fB10\fR, \fB.1\fR, \fB.001\fR etc).
+
+For more, see:
+.BR Tomo-Float64.with_precision (3)
+
+
+.TP
+.BI Float64.y0\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the Bessel function of the second kind of order 0.
+
+For more, see:
+.BR Tomo-Float64.y0 (3)
+
+
+.TP
+.BI Float64.y1\ :\ func(x:\ Float64\ ->\ Float64)
+Computes the Bessel function of the second kind of order 1.
+
+For more, see:
+.BR Tomo-Float64.y1 (3)
+
diff --git a/man/man3/tomo-Float64.E.3 b/man/man3/tomo-Float64.E.3
index 14a6d240..dd131dc5 100644
--- a/man/man3/tomo-Float64.E.3
+++ b/man/man3/tomo-Float64.E.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.E 3 2025-11-09 "Tomo man-pages"
+.TH Float64.E 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.E \- Euler's constant
.SH LIBRARY
@@ -15,3 +15,5 @@ Tomo Standard Library
The base of the natural logarithm ($e$).
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.INF.3 b/man/man3/tomo-Float64.INF.3
index 93db39ae..bab84c98 100644
--- a/man/man3/tomo-Float64.INF.3
+++ b/man/man3/tomo-Float64.INF.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.INF 3 2025-11-09 "Tomo man-pages"
+.TH Float64.INF 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.INF \- infinity
.SH LIBRARY
@@ -15,3 +15,5 @@ Tomo Standard Library
Positive infinity.
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.LN10.3 b/man/man3/tomo-Float64.LN10.3
index 08716f05..e229e0ea 100644
--- a/man/man3/tomo-Float64.LN10.3
+++ b/man/man3/tomo-Float64.LN10.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.LN10 3 2025-11-09 "Tomo man-pages"
+.TH Float64.LN10 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.LN10 \- log(10)
.SH LIBRARY
@@ -15,3 +15,5 @@ Tomo Standard Library
The natural logarithm of 10.
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.LN2.3 b/man/man3/tomo-Float64.LN2.3
index 48efd9ec..edb172c8 100644
--- a/man/man3/tomo-Float64.LN2.3
+++ b/man/man3/tomo-Float64.LN2.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.LN2 3 2025-11-09 "Tomo man-pages"
+.TH Float64.LN2 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.LN2 \- log(2)
.SH LIBRARY
@@ -15,3 +15,5 @@ Tomo Standard Library
The natural logarithm of 2.
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.LOG2E.3 b/man/man3/tomo-Float64.LOG2E.3
index 26745247..d92414a0 100644
--- a/man/man3/tomo-Float64.LOG2E.3
+++ b/man/man3/tomo-Float64.LOG2E.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.LOG2E 3 2025-11-09 "Tomo man-pages"
+.TH Float64.LOG2E 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.LOG2E \- log_2(e)
.SH LIBRARY
@@ -15,3 +15,5 @@ Tomo Standard Library
The base 2 logarithm of $e$
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.PI.3 b/man/man3/tomo-Float64.PI.3
index 98fe1468..957a7204 100644
--- a/man/man3/tomo-Float64.PI.3
+++ b/man/man3/tomo-Float64.PI.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.PI 3 2025-11-09 "Tomo man-pages"
+.TH Float64.PI 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.PI \- pi
.SH LIBRARY
@@ -15,3 +15,5 @@ Tomo Standard Library
Pi ($\pi$).
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.PI_2.3 b/man/man3/tomo-Float64.PI_2.3
index 3dafbcb4..2d3e1c3c 100644
--- a/man/man3/tomo-Float64.PI_2.3
+++ b/man/man3/tomo-Float64.PI_2.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.PI_2 3 2025-11-09 "Tomo man-pages"
+.TH Float64.PI_2 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.PI_2 \- pi/2
.SH LIBRARY
@@ -15,3 +15,5 @@ Tomo Standard Library
$\frac{\pi}{2}$
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.PI_4.3 b/man/man3/tomo-Float64.PI_4.3
index bcf3ab78..9a0109a4 100644
--- a/man/man3/tomo-Float64.PI_4.3
+++ b/man/man3/tomo-Float64.PI_4.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.PI_4 3 2025-11-09 "Tomo man-pages"
+.TH Float64.PI_4 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.PI_4 \- pi/4
.SH LIBRARY
@@ -15,3 +15,5 @@ Tomo Standard Library
$\frac{\pi}{4}$
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.SQRT1_2.3 b/man/man3/tomo-Float64.SQRT1_2.3
index e40c68b4..78f3f205 100644
--- a/man/man3/tomo-Float64.SQRT1_2.3
+++ b/man/man3/tomo-Float64.SQRT1_2.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.SQRT1_2 3 2025-11-09 "Tomo man-pages"
+.TH Float64.SQRT1_2 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.SQRT1_2 \- sqrt(1/2)
.SH LIBRARY
@@ -15,3 +15,5 @@ Tomo Standard Library
$\sqrt{\frac{1}{2}}$
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.SQRT2.3 b/man/man3/tomo-Float64.SQRT2.3
index 775a1a34..a830339a 100644
--- a/man/man3/tomo-Float64.SQRT2.3
+++ b/man/man3/tomo-Float64.SQRT2.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.SQRT2 3 2025-11-09 "Tomo man-pages"
+.TH Float64.SQRT2 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.SQRT2 \- sqrt(2)
.SH LIBRARY
@@ -15,3 +15,5 @@ Tomo Standard Library
$\sqrt{2}$
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.TAU.3 b/man/man3/tomo-Float64.TAU.3
index bf351d7f..0ad0087e 100644
--- a/man/man3/tomo-Float64.TAU.3
+++ b/man/man3/tomo-Float64.TAU.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.TAU 3 2025-11-09 "Tomo man-pages"
+.TH Float64.TAU 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.TAU \- 2*pi
.SH LIBRARY
@@ -15,3 +15,5 @@ Tomo Standard Library
Tau ($2 \times \pi$)
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.abs.3 b/man/man3/tomo-Float64.abs.3
index 754fa488..b27e3610 100644
--- a/man/man3/tomo-Float64.abs.3
+++ b/man/man3/tomo-Float64.abs.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.abs 3 2025-11-09 "Tomo man-pages"
+.TH Float64.abs 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.abs \- absolute value
.SH LIBRARY
@@ -19,10 +19,10 @@ Calculates the absolute value of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-n Float64 The number whose absolute value is to be computed. -
+lb lb lbx
+l l l.
+Name Type Description
+n Float64 The number whose absolute value is to be computed.
.TE
.SH RETURN
The absolute value of `n`.
@@ -31,3 +31,5 @@ The absolute value of `n`.
.EX
assert (-3.5).abs() == 3.5
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.acos.3 b/man/man3/tomo-Float64.acos.3
index d8bd0434..43031316 100644
--- a/man/man3/tomo-Float64.acos.3
+++ b/man/man3/tomo-Float64.acos.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.acos 3 2025-11-09 "Tomo man-pages"
+.TH Float64.acos 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.acos \- arc cosine
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the arc cosine of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the arc cosine is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the arc cosine is to be calculated.
.TE
.SH RETURN
The arc cosine of `x` in radians.
@@ -31,3 +31,5 @@ The arc cosine of `x` in radians.
.EX
assert (0.0).acos() == 1.5708
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.acosh.3 b/man/man3/tomo-Float64.acosh.3
index 37bb19d2..79c426fb 100644
--- a/man/man3/tomo-Float64.acosh.3
+++ b/man/man3/tomo-Float64.acosh.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.acosh 3 2025-11-09 "Tomo man-pages"
+.TH Float64.acosh 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.acosh \- arc hyperbolic cosine
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the inverse hyperbolic cosine of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the inverse hyperbolic cosine is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the inverse hyperbolic cosine is to be calculated.
.TE
.SH RETURN
The inverse hyperbolic cosine of `x`.
@@ -31,3 +31,5 @@ The inverse hyperbolic cosine of `x`.
.EX
assert (1.0).acosh() == 0
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.asin.3 b/man/man3/tomo-Float64.asin.3
index f56fec93..2cff0652 100644
--- a/man/man3/tomo-Float64.asin.3
+++ b/man/man3/tomo-Float64.asin.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.asin 3 2025-11-09 "Tomo man-pages"
+.TH Float64.asin 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.asin \- arc sine
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the arc sine of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the arc sine is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the arc sine is to be calculated.
.TE
.SH RETURN
The arc sine of `x` in radians.
@@ -31,3 +31,5 @@ The arc sine of `x` in radians.
.EX
assert (0.5).asin() == 0.5236
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.asinh.3 b/man/man3/tomo-Float64.asinh.3
index 9ba2329b..b1d596fb 100644
--- a/man/man3/tomo-Float64.asinh.3
+++ b/man/man3/tomo-Float64.asinh.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.asinh 3 2025-11-09 "Tomo man-pages"
+.TH Float64.asinh 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.asinh \- arc hyperbolic sine
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the inverse hyperbolic sine of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the inverse hyperbolic sine is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the inverse hyperbolic sine is to be calculated.
.TE
.SH RETURN
The inverse hyperbolic sine of `x`.
@@ -31,3 +31,5 @@ The inverse hyperbolic sine of `x`.
.EX
assert (0.0).asinh() == 0
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.atan.3 b/man/man3/tomo-Float64.atan.3
index adceaddf..550c8d99 100644
--- a/man/man3/tomo-Float64.atan.3
+++ b/man/man3/tomo-Float64.atan.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.atan 3 2025-11-09 "Tomo man-pages"
+.TH Float64.atan 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.atan \- arc tangent
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the arc tangent of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the arc tangent is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the arc tangent is to be calculated.
.TE
.SH RETURN
The arc tangent of `x` in radians.
@@ -31,3 +31,5 @@ The arc tangent of `x` in radians.
.EX
assert (1.0).atan() == 0.7854
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.atan2.3 b/man/man3/tomo-Float64.atan2.3
index b9bfbeb8..3be0ee98 100644
--- a/man/man3/tomo-Float64.atan2.3
+++ b/man/man3/tomo-Float64.atan2.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.atan2 3 2025-11-09 "Tomo man-pages"
+.TH Float64.atan2 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.atan2 \- arc tangent from 2 variables
.SH LIBRARY
@@ -19,11 +19,11 @@ Computes the arc tangent of the quotient of two numbers.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The numerator. -
-y Float64 The denominator. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The numerator.
+y Float64 The denominator.
.TE
.SH RETURN
The arc tangent of `x/y` in radians.
@@ -32,3 +32,5 @@ The arc tangent of `x/y` in radians.
.EX
assert Float64.atan2(1, 1) == 0.7854
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.atanh.3 b/man/man3/tomo-Float64.atanh.3
index f67dc23f..c311cf36 100644
--- a/man/man3/tomo-Float64.atanh.3
+++ b/man/man3/tomo-Float64.atanh.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.atanh 3 2025-11-09 "Tomo man-pages"
+.TH Float64.atanh 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.atanh \- arc hyperbolic tangent.
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the inverse hyperbolic tangent of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the inverse hyperbolic tangent is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the inverse hyperbolic tangent is to be calculated.
.TE
.SH RETURN
The inverse hyperbolic tangent of `x`.
@@ -31,3 +31,5 @@ The inverse hyperbolic tangent of `x`.
.EX
assert (0.5).atanh() == 0.5493
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.cbrt.3 b/man/man3/tomo-Float64.cbrt.3
index 1cac7bc4..077990a3 100644
--- a/man/man3/tomo-Float64.cbrt.3
+++ b/man/man3/tomo-Float64.cbrt.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.cbrt 3 2025-11-09 "Tomo man-pages"
+.TH Float64.cbrt 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.cbrt \- cube root
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the cube root of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the cube root is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the cube root is to be calculated.
.TE
.SH RETURN
The cube root of `x`.
@@ -31,3 +31,5 @@ The cube root of `x`.
.EX
assert (27.0).cbrt() == 3
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.ceil.3 b/man/man3/tomo-Float64.ceil.3
index 630e31a5..a46915cb 100644
--- a/man/man3/tomo-Float64.ceil.3
+++ b/man/man3/tomo-Float64.ceil.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.ceil 3 2025-11-09 "Tomo man-pages"
+.TH Float64.ceil 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.ceil \- ceiling function
.SH LIBRARY
@@ -19,10 +19,10 @@ Rounds a number up to the nearest integer.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number to be rounded up. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number to be rounded up.
.TE
.SH RETURN
The smallest integer greater than or equal to `x`.
@@ -31,3 +31,5 @@ The smallest integer greater than or equal to `x`.
.EX
assert (3.2).ceil() == 4
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.clamped.3 b/man/man3/tomo-Float64.clamped.3
index eba40be4..3aa78f9d 100644
--- a/man/man3/tomo-Float64.clamped.3
+++ b/man/man3/tomo-Float64.clamped.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.clamped 3 2025-11-09 "Tomo man-pages"
+.TH Float64.clamped 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.clamped \- clamp a number
.SH LIBRARY
@@ -19,12 +19,12 @@ Returns the given number clamped between two values so that it is within that ra
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number to clamp. -
-low Float64 The lowest value the result can take. -
-high Float64 The highest value the result can take. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number to clamp.
+low Float64 The lowest value the result can take.
+high Float64 The highest value the result can take.
.TE
.SH RETURN
The first argument clamped between the other two arguments.
@@ -33,3 +33,5 @@ The first argument clamped between the other two arguments.
.EX
assert (2.5).clamped(5.5, 10.5) == 5.5
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.copysign.3 b/man/man3/tomo-Float64.copysign.3
index 7100192d..3a6b5bba 100644
--- a/man/man3/tomo-Float64.copysign.3
+++ b/man/man3/tomo-Float64.copysign.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.copysign 3 2025-11-09 "Tomo man-pages"
+.TH Float64.copysign 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.copysign \- copy a number's sign
.SH LIBRARY
@@ -19,11 +19,11 @@ Copies the sign of one number to another.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number whose magnitude will be copied. -
-y Float64 The number whose sign will be copied. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number whose magnitude will be copied.
+y Float64 The number whose sign will be copied.
.TE
.SH RETURN
A number with the magnitude of `x` and the sign of `y`.
@@ -32,3 +32,5 @@ A number with the magnitude of `x` and the sign of `y`.
.EX
assert (3.0).copysign(-1) == -3
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.cos.3 b/man/man3/tomo-Float64.cos.3
index 9b9ada05..c9d3c0e8 100644
--- a/man/man3/tomo-Float64.cos.3
+++ b/man/man3/tomo-Float64.cos.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.cos 3 2025-11-09 "Tomo man-pages"
+.TH Float64.cos 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.cos \- cosine
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the cosine of a number (angle in radians).
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The angle in radians. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The angle in radians.
.TE
.SH RETURN
The cosine of `x`.
@@ -31,3 +31,5 @@ The cosine of `x`.
.EX
assert (0.0).cos() == 1
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.cosh.3 b/man/man3/tomo-Float64.cosh.3
index 273171f0..eabcba45 100644
--- a/man/man3/tomo-Float64.cosh.3
+++ b/man/man3/tomo-Float64.cosh.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.cosh 3 2025-11-09 "Tomo man-pages"
+.TH Float64.cosh 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.cosh \- hyperbolic cosine
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the hyperbolic cosine of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the hyperbolic cosine is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the hyperbolic cosine is to be calculated.
.TE
.SH RETURN
The hyperbolic cosine of `x`.
@@ -31,3 +31,5 @@ The hyperbolic cosine of `x`.
.EX
assert (0.0).cosh() == 1
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.erf.3 b/man/man3/tomo-Float64.erf.3
index 59a9e842..9d36375d 100644
--- a/man/man3/tomo-Float64.erf.3
+++ b/man/man3/tomo-Float64.erf.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.erf 3 2025-11-09 "Tomo man-pages"
+.TH Float64.erf 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.erf \- error function
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the error function of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the error function is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the error function is to be calculated.
.TE
.SH RETURN
The error function of `x`.
@@ -31,3 +31,5 @@ The error function of `x`.
.EX
assert (0.0).erf() == 0
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.erfc.3 b/man/man3/tomo-Float64.erfc.3
index 214d3477..c14e2e35 100644
--- a/man/man3/tomo-Float64.erfc.3
+++ b/man/man3/tomo-Float64.erfc.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.erfc 3 2025-11-09 "Tomo man-pages"
+.TH Float64.erfc 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.erfc \- complimentary error function
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the complementary error function of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the complementary error function is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the complementary error function is to be calculated.
.TE
.SH RETURN
The complementary error function of `x`.
@@ -31,3 +31,5 @@ The complementary error function of `x`.
.EX
assert (0.0).erfc() == 1
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.exp.3 b/man/man3/tomo-Float64.exp.3
index 945d8284..ae2702e8 100644
--- a/man/man3/tomo-Float64.exp.3
+++ b/man/man3/tomo-Float64.exp.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.exp 3 2025-11-09 "Tomo man-pages"
+.TH Float64.exp 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.exp \- base-e exponentiation
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the exponential function $e^x$ for a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The exponent. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The exponent.
.TE
.SH RETURN
The value of $e^x$.
@@ -31,3 +31,5 @@ The value of $e^x$.
.EX
assert (1.0).exp() == 2.7183
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.exp2.3 b/man/man3/tomo-Float64.exp2.3
index f6ab754a..95bb02c3 100644
--- a/man/man3/tomo-Float64.exp2.3
+++ b/man/man3/tomo-Float64.exp2.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.exp2 3 2025-11-09 "Tomo man-pages"
+.TH Float64.exp2 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.exp2 \- base-2 exponentiation
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes $2^x$ for a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The exponent. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The exponent.
.TE
.SH RETURN
The value of $2^x$.
@@ -31,3 +31,5 @@ The value of $2^x$.
.EX
assert (3.0).exp2() == 8
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.expm1.3 b/man/man3/tomo-Float64.expm1.3
index c92e4c23..4aa82378 100644
--- a/man/man3/tomo-Float64.expm1.3
+++ b/man/man3/tomo-Float64.expm1.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.expm1 3 2025-11-09 "Tomo man-pages"
+.TH Float64.expm1 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.expm1 \- base-e exponential minus 1
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes $e^x - 1$ for a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The exponent. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The exponent.
.TE
.SH RETURN
The value of $e^x - 1$.
@@ -31,3 +31,5 @@ The value of $e^x - 1$.
.EX
assert (1.0).expm1() == 1.7183
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.fdim.3 b/man/man3/tomo-Float64.fdim.3
index f7326d9a..54774806 100644
--- a/man/man3/tomo-Float64.fdim.3
+++ b/man/man3/tomo-Float64.fdim.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.fdim 3 2025-11-09 "Tomo man-pages"
+.TH Float64.fdim 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.fdim \- positive difference
.SH LIBRARY
@@ -19,11 +19,11 @@ Computes the positive difference between two numbers.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The first number. -
-y Float64 The second number. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The first number.
+y Float64 The second number.
.TE
.SH RETURN
The positive difference $\max(0, x - y)$.
@@ -34,3 +34,5 @@ fd
assert (5.0).fdim(3) == 2
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.floor.3 b/man/man3/tomo-Float64.floor.3
index 42a79dec..86953b9e 100644
--- a/man/man3/tomo-Float64.floor.3
+++ b/man/man3/tomo-Float64.floor.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.floor 3 2025-11-09 "Tomo man-pages"
+.TH Float64.floor 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.floor \- floor function
.SH LIBRARY
@@ -19,10 +19,10 @@ Rounds a number down to the nearest integer.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number to be rounded down. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number to be rounded down.
.TE
.SH RETURN
The largest integer less than or equal to `x`.
@@ -31,3 +31,5 @@ The largest integer less than or equal to `x`.
.EX
assert (3.7).floor() == 3
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.hypot.3 b/man/man3/tomo-Float64.hypot.3
index 19c197c6..5780f390 100644
--- a/man/man3/tomo-Float64.hypot.3
+++ b/man/man3/tomo-Float64.hypot.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.hypot 3 2025-11-09 "Tomo man-pages"
+.TH Float64.hypot 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.hypot \- Euclidean distance function
.SH LIBRARY
@@ -19,11 +19,11 @@ Computes the Euclidean norm, $\sqrt{x^2 + y^2}$, of two numbers.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The first number. -
-y Float64 The second number. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The first number.
+y Float64 The second number.
.TE
.SH RETURN
The Euclidean norm of `x` and `y`.
@@ -32,3 +32,5 @@ The Euclidean norm of `x` and `y`.
.EX
assert Float64.hypot(3, 4) == 5
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.is_between.3 b/man/man3/tomo-Float64.is_between.3
index 9889299e..ffe62d2a 100644
--- a/man/man3/tomo-Float64.is_between.3
+++ b/man/man3/tomo-Float64.is_between.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.is_between 3 2025-11-09 "Tomo man-pages"
+.TH Float64.is_between 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.is_between \- check if a number is in a range
.SH LIBRARY
@@ -19,12 +19,12 @@ Determines if a number is between two numbers (inclusive).
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The integer to be checked. -
-low Float64 The lower bound to check (inclusive). -
-high Float64 The upper bound to check (inclusive). -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The integer to be checked.
+low Float64 The lower bound to check (inclusive).
+high Float64 The upper bound to check (inclusive).
.TE
.SH RETURN
`yes` if `low <= x and x <= high`, otherwise `no`
@@ -35,3 +35,5 @@ assert (7.5).is_between(1, 10) == yes
assert (7.5).is_between(100, 200) == no
assert (7.5).is_between(1, 7.5) == yes
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.isfinite.3 b/man/man3/tomo-Float64.isfinite.3
index b72268f5..ef5c7a3b 100644
--- a/man/man3/tomo-Float64.isfinite.3
+++ b/man/man3/tomo-Float64.isfinite.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.isfinite 3 2025-11-09 "Tomo man-pages"
+.TH Float64.isfinite 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.isfinite \- check for finite number
.SH LIBRARY
@@ -19,10 +19,10 @@ Checks if a number is finite.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-n Float64 The number to be checked. -
+lb lb lbx
+l l l.
+Name Type Description
+n Float64 The number to be checked.
.TE
.SH RETURN
`yes` if `n` is finite, `no` otherwise.
@@ -32,3 +32,5 @@ n Float64 The number to be checked. -
assert (1.0).isfinite() == yes
assert Float64.INF.isfinite() == no
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.isinf.3 b/man/man3/tomo-Float64.isinf.3
index 6701fdc0..e8c97daa 100644
--- a/man/man3/tomo-Float64.isinf.3
+++ b/man/man3/tomo-Float64.isinf.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.isinf 3 2025-11-09 "Tomo man-pages"
+.TH Float64.isinf 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.isinf \- check for infinite number
.SH LIBRARY
@@ -19,10 +19,10 @@ Checks if a number is infinite.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-n Float64 The number to be checked. -
+lb lb lbx
+l l l.
+Name Type Description
+n Float64 The number to be checked.
.TE
.SH RETURN
`yes` if `n` is infinite, `no` otherwise.
@@ -32,3 +32,5 @@ n Float64 The number to be checked. -
assert Float64.INF.isinf() == yes
assert (1.0).isinf() == no
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.j0.3 b/man/man3/tomo-Float64.j0.3
index 97ada7c7..94e3155f 100644
--- a/man/man3/tomo-Float64.j0.3
+++ b/man/man3/tomo-Float64.j0.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.j0 3 2025-11-09 "Tomo man-pages"
+.TH Float64.j0 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.j0 \- Bessel function
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the Bessel function of the first kind of order 0.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the Bessel function is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the Bessel function is to be calculated.
.TE
.SH RETURN
The Bessel function of the first kind of order 0 of `x`.
@@ -31,3 +31,5 @@ The Bessel function of the first kind of order 0 of `x`.
.EX
assert (0.0).j0() == 1
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.j1.3 b/man/man3/tomo-Float64.j1.3
index f5cf816e..f63ad696 100644
--- a/man/man3/tomo-Float64.j1.3
+++ b/man/man3/tomo-Float64.j1.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.j1 3 2025-11-09 "Tomo man-pages"
+.TH Float64.j1 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.j1 \- Bessel function
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the Bessel function of the first kind of order 1.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the Bessel function is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the Bessel function is to be calculated.
.TE
.SH RETURN
The Bessel function of the first kind of order 1 of `x`.
@@ -31,3 +31,5 @@ The Bessel function of the first kind of order 1 of `x`.
.EX
assert (0.0).j1() == 0
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.log.3 b/man/man3/tomo-Float64.log.3
index 7808ddf9..885a2d6d 100644
--- a/man/man3/tomo-Float64.log.3
+++ b/man/man3/tomo-Float64.log.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.log 3 2025-11-09 "Tomo man-pages"
+.TH Float64.log 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.log \- natural logarithm
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the natural logarithm (base $e$) of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the natural logarithm is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the natural logarithm is to be calculated.
.TE
.SH RETURN
The natural logarithm of `x`.
@@ -31,3 +31,5 @@ The natural logarithm of `x`.
.EX
assert Float64.E.log() == 1
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.log10.3 b/man/man3/tomo-Float64.log10.3
index 37d63100..07b4131b 100644
--- a/man/man3/tomo-Float64.log10.3
+++ b/man/man3/tomo-Float64.log10.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.log10 3 2025-11-09 "Tomo man-pages"
+.TH Float64.log10 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.log10 \- logarithm base-10
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the base-10 logarithm of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the base-10 logarithm is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the base-10 logarithm is to be calculated.
.TE
.SH RETURN
The base-10 logarithm of `x`.
@@ -31,3 +31,5 @@ The base-10 logarithm of `x`.
.EX
assert (100.0).log10() == 2
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.log1p.3 b/man/man3/tomo-Float64.log1p.3
index 0cbec8f7..6c19d416 100644
--- a/man/man3/tomo-Float64.log1p.3
+++ b/man/man3/tomo-Float64.log1p.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.log1p 3 2025-11-09 "Tomo man-pages"
+.TH Float64.log1p 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.log1p \- logarithm of 1 plus x
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes $\log(1 + x)$ for a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which $\log(1 + x)$ is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which $\log(1 + x)$ is to be calculated.
.TE
.SH RETURN
The value of $\log(1 + x)$.
@@ -31,3 +31,5 @@ The value of $\log(1 + x)$.
.EX
assert (1.0).log1p() == 0.6931
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.log2.3 b/man/man3/tomo-Float64.log2.3
index c6934d7b..58b4299c 100644
--- a/man/man3/tomo-Float64.log2.3
+++ b/man/man3/tomo-Float64.log2.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.log2 3 2025-11-09 "Tomo man-pages"
+.TH Float64.log2 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.log2 \- logarithm base-2
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the base-2 logarithm of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the base-2 logarithm is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the base-2 logarithm is to be calculated.
.TE
.SH RETURN
The base-2 logarithm of `x`.
@@ -31,3 +31,5 @@ The base-2 logarithm of `x`.
.EX
assert (8.0).log2() == 3
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.logb.3 b/man/man3/tomo-Float64.logb.3
index ec165aac..8f474df9 100644
--- a/man/man3/tomo-Float64.logb.3
+++ b/man/man3/tomo-Float64.logb.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.logb 3 2025-11-09 "Tomo man-pages"
+.TH Float64.logb 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.logb \- exponent of a floating point value
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the binary exponent (base-2 logarithm) of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the binary exponent is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the binary exponent is to be calculated.
.TE
.SH RETURN
The binary exponent of `x`.
@@ -31,3 +31,5 @@ The binary exponent of `x`.
.EX
assert (8.0).logb() == 3
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.mix.3 b/man/man3/tomo-Float64.mix.3
index 24ed92d4..c8afc56e 100644
--- a/man/man3/tomo-Float64.mix.3
+++ b/man/man3/tomo-Float64.mix.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.mix 3 2025-11-09 "Tomo man-pages"
+.TH Float64.mix 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.mix \- mix two numbers by an amount
.SH LIBRARY
@@ -19,12 +19,12 @@ Interpolates between two numbers based on a given amount.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-amount Float64 The interpolation factor (between `0` and `1`). -
-x Float64 The starting number. -
-y Float64 The ending number. -
+lb lb lbx
+l l l.
+Name Type Description
+amount Float64 The interpolation factor (between \fB0\fR and \fB1\fR).
+x Float64 The starting number.
+y Float64 The ending number.
.TE
.SH RETURN
The interpolated number between `x` and `y` based on `amount`.
@@ -34,3 +34,5 @@ The interpolated number between `x` and `y` based on `amount`.
assert (0.5).mix(10, 20) == 15
assert (0.25).mix(10, 20) == 12.5
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.near.3 b/man/man3/tomo-Float64.near.3
index 85a1bad4..3cf40244 100644
--- a/man/man3/tomo-Float64.near.3
+++ b/man/man3/tomo-Float64.near.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.near 3 2025-11-09 "Tomo man-pages"
+.TH Float64.near 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.near \- check if two numbers are near each other
.SH LIBRARY
@@ -24,8 +24,8 @@ l l l l.
Name Type Description Default
x Float64 The first number. -
y Float64 The second number. -
-ratio Float64 The relative tolerance. Default is `1e-9`. 1e-9
-min_epsilon Float64 The absolute tolerance. Default is `1e-9`. 1e-9
+ratio Float64 The relative tolerance. Default is \fB1e-9\fR. 1e-9
+min_epsilon Float64 The absolute tolerance. Default is \fB1e-9\fR. 1e-9
.TE
.SH RETURN
`yes` if `x` and `y` are approximately equal within the specified tolerances, `no` otherwise.
@@ -36,3 +36,5 @@ assert (1.0).near(1.000000001) == yes
assert (100.0).near(110, ratio=0.1) == yes
assert (5.0).near(5.1, min_epsilon=0.1) == yes
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.nextafter.3 b/man/man3/tomo-Float64.nextafter.3
index 4d931ca4..8345d23e 100644
--- a/man/man3/tomo-Float64.nextafter.3
+++ b/man/man3/tomo-Float64.nextafter.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.nextafter 3 2025-11-09 "Tomo man-pages"
+.TH Float64.nextafter 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.nextafter \- next floating point number
.SH LIBRARY
@@ -19,11 +19,11 @@ Computes the next representable value after a given number towards a specified d
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The starting number. -
-y Float64 The direction towards which to find the next representable value. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The starting number.
+y Float64 The direction towards which to find the next representable value.
.TE
.SH RETURN
The next representable value after `x` in the direction of `y`.
@@ -32,3 +32,5 @@ The next representable value after `x` in the direction of `y`.
.EX
assert (1.0).nextafter(1.1) == 1.0000000000000002
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.parse.3 b/man/man3/tomo-Float64.parse.3
index 6829f53c..2ad4c1c4 100644
--- a/man/man3/tomo-Float64.parse.3
+++ b/man/man3/tomo-Float64.parse.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.parse 3 2025-11-09 "Tomo man-pages"
+.TH Float64.parse 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.parse \- convert text to number
.SH LIBRARY
@@ -37,3 +37,5 @@ remainder : Text
assert Float64.parse("1.5junk", &remainder) == 1.5
assert remainder == "junk"
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.percent.3 b/man/man3/tomo-Float64.percent.3
index 4a8e3c34..d93adbd6 100644
--- a/man/man3/tomo-Float64.percent.3
+++ b/man/man3/tomo-Float64.percent.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.percent 3 2025-11-09 "Tomo man-pages"
+.TH Float64.percent 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.percent \- format as a percentage
.SH LIBRARY
@@ -35,3 +35,5 @@ assert (1./3.).percent(2) == "33.33%"
assert (1./3.).percent(2, precision=0.0001) == "33.3333%"
assert (1./3.).percent(2, precision=10.) == "30%"
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.rint.3 b/man/man3/tomo-Float64.rint.3
index 8226d646..dace55c7 100644
--- a/man/man3/tomo-Float64.rint.3
+++ b/man/man3/tomo-Float64.rint.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.rint 3 2025-11-09 "Tomo man-pages"
+.TH Float64.rint 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.rint \- round to nearest integer
.SH LIBRARY
@@ -19,10 +19,10 @@ Rounds a number to the nearest integer, with ties rounded to the nearest even in
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number to be rounded. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number to be rounded.
.TE
.SH RETURN
The nearest integer value of `x`.
@@ -32,3 +32,5 @@ The nearest integer value of `x`.
assert (3.5).rint() == 4
assert (2.5).rint() == 2
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.round.3 b/man/man3/tomo-Float64.round.3
index 872e2527..e422416e 100644
--- a/man/man3/tomo-Float64.round.3
+++ b/man/man3/tomo-Float64.round.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.round 3 2025-11-09 "Tomo man-pages"
+.TH Float64.round 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.round \- round to nearest integer
.SH LIBRARY
@@ -19,10 +19,10 @@ Rounds a number to the nearest whole number integer.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number to be rounded. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number to be rounded.
.TE
.SH RETURN
The nearest integer value of `x`.
@@ -32,3 +32,5 @@ The nearest integer value of `x`.
assert (2.3).round() == 2
assert (2.7).round() == 3
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.significand.3 b/man/man3/tomo-Float64.significand.3
index ce49cb1c..d06f9b21 100644
--- a/man/man3/tomo-Float64.significand.3
+++ b/man/man3/tomo-Float64.significand.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.significand 3 2025-11-09 "Tomo man-pages"
+.TH Float64.significand 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.significand \- get mantissa
.SH LIBRARY
@@ -19,10 +19,10 @@ Extracts the significand (or mantissa) of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number from which to extract the significand. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number from which to extract the significand.
.TE
.SH RETURN
The significand of `x`.
@@ -31,3 +31,5 @@ The significand of `x`.
.EX
assert (1234.567).significand() == 0.1234567
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.sin.3 b/man/man3/tomo-Float64.sin.3
index 0f71ecf4..7aeb22a5 100644
--- a/man/man3/tomo-Float64.sin.3
+++ b/man/man3/tomo-Float64.sin.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.sin 3 2025-11-09 "Tomo man-pages"
+.TH Float64.sin 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.sin \- sine
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the sine of a number (angle in radians).
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The angle in radians. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The angle in radians.
.TE
.SH RETURN
The sine of `x`.
@@ -31,3 +31,5 @@ The sine of `x`.
.EX
assert (0.0).sin() == 0
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.sinh.3 b/man/man3/tomo-Float64.sinh.3
index 3bc477e8..1fa6bdcb 100644
--- a/man/man3/tomo-Float64.sinh.3
+++ b/man/man3/tomo-Float64.sinh.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.sinh 3 2025-11-09 "Tomo man-pages"
+.TH Float64.sinh 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.sinh \- hyperbolic sine
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the hyperbolic sine of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the hyperbolic sine is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the hyperbolic sine is to be calculated.
.TE
.SH RETURN
The hyperbolic sine of `x`.
@@ -31,3 +31,5 @@ The hyperbolic sine of `x`.
.EX
assert (0.0).sinh() == 0
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.sqrt.3 b/man/man3/tomo-Float64.sqrt.3
index eb857cf1..40d61477 100644
--- a/man/man3/tomo-Float64.sqrt.3
+++ b/man/man3/tomo-Float64.sqrt.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.sqrt 3 2025-11-09 "Tomo man-pages"
+.TH Float64.sqrt 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.sqrt \- square root
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the square root of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the square root is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the square root is to be calculated.
.TE
.SH RETURN
The square root of `x`.
@@ -31,3 +31,5 @@ The square root of `x`.
.EX
assert (16.0).sqrt() == 4
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.tan.3 b/man/man3/tomo-Float64.tan.3
index e0ba363a..f110b453 100644
--- a/man/man3/tomo-Float64.tan.3
+++ b/man/man3/tomo-Float64.tan.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.tan 3 2025-11-09 "Tomo man-pages"
+.TH Float64.tan 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.tan \- tangent
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the tangent of a number (angle in radians).
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The angle in radians. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The angle in radians.
.TE
.SH RETURN
The tangent of `x`.
@@ -31,3 +31,5 @@ The tangent of `x`.
.EX
assert (0.0).tan() == 0
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.tanh.3 b/man/man3/tomo-Float64.tanh.3
index fc71ca7a..a0f6c7b8 100644
--- a/man/man3/tomo-Float64.tanh.3
+++ b/man/man3/tomo-Float64.tanh.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.tanh 3 2025-11-09 "Tomo man-pages"
+.TH Float64.tanh 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.tanh \- hyperbolic tangent
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the hyperbolic tangent of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the hyperbolic tangent is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the hyperbolic tangent is to be calculated.
.TE
.SH RETURN
The hyperbolic tangent of `x`.
@@ -31,3 +31,5 @@ The hyperbolic tangent of `x`.
.EX
assert (0.0).tanh() == 0
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.tgamma.3 b/man/man3/tomo-Float64.tgamma.3
index f0132bed..5559d4c2 100644
--- a/man/man3/tomo-Float64.tgamma.3
+++ b/man/man3/tomo-Float64.tgamma.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.tgamma 3 2025-11-09 "Tomo man-pages"
+.TH Float64.tgamma 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.tgamma \- true gamma function
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the gamma function of a number.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the gamma function is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the gamma function is to be calculated.
.TE
.SH RETURN
The gamma function of `x`.
@@ -31,3 +31,5 @@ The gamma function of `x`.
.EX
assert (1.0).tgamma() == 1
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.trunc.3 b/man/man3/tomo-Float64.trunc.3
index eb43275d..dfd8e387 100644
--- a/man/man3/tomo-Float64.trunc.3
+++ b/man/man3/tomo-Float64.trunc.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.trunc 3 2025-11-09 "Tomo man-pages"
+.TH Float64.trunc 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.trunc \- truncate a number
.SH LIBRARY
@@ -19,10 +19,10 @@ Truncates a number to the nearest integer towards zero.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number to be truncated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number to be truncated.
.TE
.SH RETURN
The integer part of `x` towards zero.
@@ -32,3 +32,5 @@ The integer part of `x` towards zero.
assert (3.7).trunc() == 3
assert (-3.7).trunc() == -3
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.with_precision.3 b/man/man3/tomo-Float64.with_precision.3
index 2699e0a6..a98064cf 100644
--- a/man/man3/tomo-Float64.with_precision.3
+++ b/man/man3/tomo-Float64.with_precision.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.with_precision 3 2025-11-09 "Tomo man-pages"
+.TH Float64.with_precision 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.with_precision \- round to a given precision
.SH LIBRARY
@@ -19,11 +19,11 @@ Round a number to the given precision level (specified as `10`, `.1`, `.001` etc
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-n Float64 The number to be rounded to a given precision. -
-precision Float64 The precision to which the number should be rounded. -
+lb lb lbx
+l l l.
+Name Type Description
+n Float64 The number to be rounded to a given precision.
+precision Float64 The precision to which the number should be rounded.
.TE
.SH RETURN
The number, rounded to the given precision level.
@@ -34,3 +34,5 @@ assert (0.1234567).with_precision(0.01) == 0.12
assert (123456.).with_precision(100) == 123500
assert (1234567.).with_precision(5) == 1234565
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.y0.3 b/man/man3/tomo-Float64.y0.3
index 95d67c3b..1724a29d 100644
--- a/man/man3/tomo-Float64.y0.3
+++ b/man/man3/tomo-Float64.y0.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.y0 3 2025-11-09 "Tomo man-pages"
+.TH Float64.y0 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.y0 \- Bessel function
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the Bessel function of the second kind of order 0.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the Bessel function is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the Bessel function is to be calculated.
.TE
.SH RETURN
The Bessel function of the second kind of order 0 of `x`.
@@ -31,3 +31,5 @@ The Bessel function of the second kind of order 0 of `x`.
.EX
assert (1.0).y0() == -0.7652
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Float64.y1.3 b/man/man3/tomo-Float64.y1.3
index 2c5bce05..0896d1e7 100644
--- a/man/man3/tomo-Float64.y1.3
+++ b/man/man3/tomo-Float64.y1.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Float64.y1 3 2025-11-09 "Tomo man-pages"
+.TH Float64.y1 3 2025-12-11 "Tomo man-pages"
.SH NAME
Float64.y1 \- Bessel function
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the Bessel function of the second kind of order 1.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Float64 The number for which the Bessel function is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Float64 The number for which the Bessel function is to be calculated.
.TE
.SH RETURN
The Bessel function of the second kind of order 1 of `x`.
@@ -31,3 +31,5 @@ The Bessel function of the second kind of order 1 of `x`.
.EX
assert (1.0).y1() == 0.4401
.EE
+.SH SEE ALSO
+.BR Tomo-Float64 (3)
diff --git a/man/man3/tomo-Int.3 b/man/man3/tomo-Int.3
new file mode 100644
index 00000000..186c0aae
--- /dev/null
+++ b/man/man3/tomo-Int.3
@@ -0,0 +1,131 @@
+'\" t
+.\" Copyright (c) 2025 Bruce Hill
+.\" All rights reserved.
+.\"
+.TH Int 3 2025-11-30 "Tomo man-pages"
+.SH NAME
+Int \- a Tomo type
+.SH LIBRARY
+Tomo Standard Library
+.fi
+.SH METHODS
+
+.TP
+.BI Int.abs\ :\ func(x:\ Int\ ->\ Int)
+Calculates the absolute value of an integer.
+
+For more, see:
+.BR Tomo-Int.abs (3)
+
+
+.TP
+.BI Int.choose\ :\ func(n:\ Int,\ k:\ Int\ ->\ Int)
+Computes the binomial coefficient of the given numbers (the equivalent of \fBn\fR choose \fBk\fR in combinatorics). This is equal to \fBn.factorial()/(k.factorial() * (n-k).factorial())\fR.
+
+For more, see:
+.BR Tomo-Int.choose (3)
+
+
+.TP
+.BI Int.clamped\ :\ func(x:\ Int,\ low:\ Int,\ high:\ Int\ ->\ Int)
+Returns the given number clamped between two values so that it is within that range.
+
+For more, see:
+.BR Tomo-Int.clamped (3)
+
+
+.TP
+.BI Int.factorial\ :\ func(n:\ Int\ ->\ Text)
+Computes the factorial of an integer.
+
+For more, see:
+.BR Tomo-Int.factorial (3)
+
+
+.TP
+.BI Int.get_bit\ :\ func(i:\ Int,\ bit_index:\ Int\ ->\ Bool)
+In the binary representation of an integer, check whether a given bit index is set to 1 or not.
+
+For more, see:
+.BR Tomo-Int.get_bit (3)
+
+
+.TP
+.BI Int.hex\ :\ func(i:\ Int,\ digits:\ Int\ =\ 0,\ uppercase:\ Bool\ =\ yes,\ prefix:\ Bool\ =\ yes\ ->\ Text)
+Converts an integer to its hexadecimal representation.
+
+For more, see:
+.BR Tomo-Int.hex (3)
+
+
+.TP
+.BI Int.is_between\ :\ func(x:\ Int,\ low:\ Int,\ high:\ Int\ ->\ Bool)
+Determines if an integer is between two numbers (inclusive).
+
+For more, see:
+.BR Tomo-Int.is_between (3)
+
+
+.TP
+.BI Int.is_prime\ :\ func(x:\ Int,\ reps:\ Int\ =\ 50\ ->\ Bool)
+Determines if an integer is a prime number.
+
+For more, see:
+.BR Tomo-Int.is_prime (3)
+
+
+.TP
+.BI Int.next_prime\ :\ func(x:\ Int\ ->\ Int)
+Finds the next prime number greater than the given integer.
+
+For more, see:
+.BR Tomo-Int.next_prime (3)
+
+
+.TP
+.BI Int.octal\ :\ func(i:\ Int,\ digits:\ Int\ =\ 0,\ prefix:\ Bool\ =\ yes\ ->\ Text)
+Converts an integer to its octal representation.
+
+For more, see:
+.BR Tomo-Int.octal (3)
+
+
+.TP
+.BI Int.onward\ :\ func(first:\ Int,\ step:\ Int\ =\ 1\ ->\ Text)
+Return an iterator that counts infinitely from the starting integer (with an optional step size).
+
+For more, see:
+.BR Tomo-Int.onward (3)
+
+
+.TP
+.BI Int.parse\ :\ func(text:\ Text,\ base:\ Int?\ =\ none,\ remainder:\ &Text?\ =\ none\ ->\ Int?)
+Converts a text representation of an integer into an integer.
+
+For more, see:
+.BR Tomo-Int.parse (3)
+
+
+.TP
+.BI Int.prev_prime\ :\ func(x:\ Int\ ->\ Int?)
+Finds the previous prime number less than the given integer. If there is no previous prime number (i.e. if a number less than \fB2\fR is provided), then the function will create a runtime error.
+
+For more, see:
+.BR Tomo-Int.prev_prime (3)
+
+
+.TP
+.BI Int.sqrt\ :\ func(x:\ Int\ ->\ Int)
+Calculates the nearest square root of an integer.
+
+For more, see:
+.BR Tomo-Int.sqrt (3)
+
+
+.TP
+.BI Int.to\ :\ func(first:\ Int,\ last:\ Int,\ step:\ Int?\ =\ none\ ->\ func(->Int?))
+Returns an iterator function that iterates over the range of numbers specified.
+
+For more, see:
+.BR Tomo-Int.to (3)
+
diff --git a/man/man3/tomo-Int.abs.3 b/man/man3/tomo-Int.abs.3
index 714cb8df..71c60960 100644
--- a/man/man3/tomo-Int.abs.3
+++ b/man/man3/tomo-Int.abs.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Int.abs 3 2025-11-09 "Tomo man-pages"
+.TH Int.abs 3 2025-11-29 "Tomo man-pages"
.SH NAME
Int.abs \- absolute value
.SH LIBRARY
@@ -19,10 +19,10 @@ Calculates the absolute value of an integer.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Int The integer whose absolute value is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Int The integer whose absolute value is to be calculated.
.TE
.SH RETURN
The absolute value of `x`.
@@ -31,3 +31,5 @@ The absolute value of `x`.
.EX
assert (-10).abs() == 10
.EE
+.SH SEE ALSO
+.BR Tomo-Int (3)
diff --git a/man/man3/tomo-Int.choose.3 b/man/man3/tomo-Int.choose.3
index c18a8d54..1e5c705b 100644
--- a/man/man3/tomo-Int.choose.3
+++ b/man/man3/tomo-Int.choose.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Int.choose 3 2025-11-09 "Tomo man-pages"
+.TH Int.choose 3 2025-11-29 "Tomo man-pages"
.SH NAME
Int.choose \- binomial coefficient
.SH LIBRARY
@@ -19,11 +19,11 @@ Computes the binomial coefficient of the given numbers (the equivalent of `n` ch
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-n Int The number of things to choose from. -
-k Int The number of things to be chosen. -
+lb lb lbx
+l l l.
+Name Type Description
+n Int The number of things to choose from.
+k Int The number of things to be chosen.
.TE
.SH RETURN
The binomial coefficient, equivalent to the number of ways to uniquely choose `k` objects from among `n` objects, ignoring order.
@@ -32,3 +32,5 @@ The binomial coefficient, equivalent to the number of ways to uniquely choose `k
.EX
assert (4).choose(2) == 6
.EE
+.SH SEE ALSO
+.BR Tomo-Int (3)
diff --git a/man/man3/tomo-Int.clamped.3 b/man/man3/tomo-Int.clamped.3
index c72f5e1c..5d846a21 100644
--- a/man/man3/tomo-Int.clamped.3
+++ b/man/man3/tomo-Int.clamped.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Int.clamped 3 2025-11-09 "Tomo man-pages"
+.TH Int.clamped 3 2025-11-29 "Tomo man-pages"
.SH NAME
Int.clamped \- clamp an integer
.SH LIBRARY
@@ -19,12 +19,12 @@ Returns the given number clamped between two values so that it is within that ra
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Int The integer to clamp. -
-low Int The lowest value the result can take. -
-high Int The highest value the result can take. -
+lb lb lbx
+l l l.
+Name Type Description
+x Int The integer to clamp.
+low Int The lowest value the result can take.
+high Int The highest value the result can take.
.TE
.SH RETURN
The first argument clamped between the other two arguments.
@@ -33,3 +33,5 @@ The first argument clamped between the other two arguments.
.EX
assert (2).clamped(5, 10) == 5
.EE
+.SH SEE ALSO
+.BR Tomo-Int (3)
diff --git a/man/man3/tomo-Int.factorial.3 b/man/man3/tomo-Int.factorial.3
index 396b1f8f..e7105287 100644
--- a/man/man3/tomo-Int.factorial.3
+++ b/man/man3/tomo-Int.factorial.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Int.factorial 3 2025-11-09 "Tomo man-pages"
+.TH Int.factorial 3 2025-11-29 "Tomo man-pages"
.SH NAME
Int.factorial \- factorial
.SH LIBRARY
@@ -19,10 +19,10 @@ Computes the factorial of an integer.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-n Int The integer to compute the factorial of. -
+lb lb lbx
+l l l.
+Name Type Description
+n Int The integer to compute the factorial of.
.TE
.SH RETURN
The factorial of the given integer.
@@ -31,3 +31,5 @@ The factorial of the given integer.
.EX
assert (10).factorial() == 3628800
.EE
+.SH SEE ALSO
+.BR Tomo-Int (3)
diff --git a/man/man3/tomo-Int.get_bit.3 b/man/man3/tomo-Int.get_bit.3
index d3d1d3ec..bf9f11b2 100644
--- a/man/man3/tomo-Int.get_bit.3
+++ b/man/man3/tomo-Int.get_bit.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Int.get_bit 3 2025-11-09 "Tomo man-pages"
+.TH Int.get_bit 3 2025-11-29 "Tomo man-pages"
.SH NAME
Int.get_bit \- check whether a bit is set
.SH LIBRARY
@@ -19,11 +19,11 @@ In the binary representation of an integer, check whether a given bit index is s
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-i Int The integer whose bits are being inspected. -
-bit_index Int The index of the bit to check (1-indexed). -
+lb lb lbx
+l l l.
+Name Type Description
+i Int The integer whose bits are being inspected.
+bit_index Int The index of the bit to check (1-indexed).
.TE
.SH RETURN
Whether or not the given bit index is set to 1 in the binary representation of the integer.
@@ -38,3 +38,5 @@ assert (6).get_bit(2) == yes
assert (6).get_bit(3) == yes
assert (6).get_bit(4) == no
.EE
+.SH SEE ALSO
+.BR Tomo-Int (3)
diff --git a/man/man3/tomo-Int.hex.3 b/man/man3/tomo-Int.hex.3
index f1c2fc8e..37fe45e4 100644
--- a/man/man3/tomo-Int.hex.3
+++ b/man/man3/tomo-Int.hex.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Int.hex 3 2025-11-09 "Tomo man-pages"
+.TH Int.hex 3 2025-11-29 "Tomo man-pages"
.SH NAME
Int.hex \- convert to hexidecimal
.SH LIBRARY
@@ -34,3 +34,5 @@ The hexadecimal string representation of the integer.
.EX
assert (255).hex(digits=4, uppercase=yes, prefix=yes) == "0x00FF"
.EE
+.SH SEE ALSO
+.BR Tomo-Int (3)
diff --git a/man/man3/tomo-Int.is_between.3 b/man/man3/tomo-Int.is_between.3
index 89340542..8087e0d0 100644
--- a/man/man3/tomo-Int.is_between.3
+++ b/man/man3/tomo-Int.is_between.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Int.is_between 3 2025-11-09 "Tomo man-pages"
+.TH Int.is_between 3 2025-11-29 "Tomo man-pages"
.SH NAME
Int.is_between \- test if an int is in a range
.SH LIBRARY
@@ -19,12 +19,12 @@ Determines if an integer is between two numbers (inclusive).
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Int The integer to be checked. -
-low Int The lower bound to check (inclusive). -
-high Int The upper bound to check (inclusive). -
+lb lb lbx
+l l l.
+Name Type Description
+x Int The integer to be checked.
+low Int The lower bound to check (inclusive).
+high Int The upper bound to check (inclusive).
.TE
.SH RETURN
`yes` if `low <= x and x <= high`, otherwise `no`
@@ -35,3 +35,5 @@ assert (7).is_between(1, 10) == yes
assert (7).is_between(100, 200) == no
assert (7).is_between(1, 7) == yes
.EE
+.SH SEE ALSO
+.BR Tomo-Int (3)
diff --git a/man/man3/tomo-Int.is_prime.3 b/man/man3/tomo-Int.is_prime.3
index ad5cdc66..5dc2c826 100644
--- a/man/man3/tomo-Int.is_prime.3
+++ b/man/man3/tomo-Int.is_prime.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Int.is_prime 3 2025-11-09 "Tomo man-pages"
+.TH Int.is_prime 3 2025-11-29 "Tomo man-pages"
.SH NAME
Int.is_prime \- check if an integer is prime
.SH LIBRARY
@@ -36,3 +36,5 @@ This function is _probabilistic_. With the default arguments, the chances of get
assert (7).is_prime() == yes
assert (6).is_prime() == no
.EE
+.SH SEE ALSO
+.BR Tomo-Int (3)
diff --git a/man/man3/tomo-Int.next_prime.3 b/man/man3/tomo-Int.next_prime.3
index 9380bc5f..ab2c4307 100644
--- a/man/man3/tomo-Int.next_prime.3
+++ b/man/man3/tomo-Int.next_prime.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Int.next_prime 3 2025-11-09 "Tomo man-pages"
+.TH Int.next_prime 3 2025-11-29 "Tomo man-pages"
.SH NAME
Int.next_prime \- get the next prime
.SH LIBRARY
@@ -19,10 +19,10 @@ Finds the next prime number greater than the given integer.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Int The integer after which to find the next prime. -
+lb lb lbx
+l l l.
+Name Type Description
+x Int The integer after which to find the next prime.
.TE
.SH RETURN
The next prime number greater than `x`.
@@ -34,3 +34,5 @@ This function is _probabilistic_, but the chances of getting an incorrect answer
.EX
assert (11).next_prime() == 13
.EE
+.SH SEE ALSO
+.BR Tomo-Int (3)
diff --git a/man/man3/tomo-Int.octal.3 b/man/man3/tomo-Int.octal.3
index e4e462ae..627a2e9f 100644
--- a/man/man3/tomo-Int.octal.3
+++ b/man/man3/tomo-Int.octal.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Int.octal 3 2025-11-09 "Tomo man-pages"
+.TH Int.octal 3 2025-11-29 "Tomo man-pages"
.SH NAME
Int.octal \- convert to octal
.SH LIBRARY
@@ -33,3 +33,5 @@ The octal string representation of the integer.
.EX
assert (64).octal(digits=4, prefix=yes) == "0o0100"
.EE
+.SH SEE ALSO
+.BR Tomo-Int (3)
diff --git a/man/man3/tomo-Int.onward.3 b/man/man3/tomo-Int.onward.3
index 106a84b9..596cf842 100644
--- a/man/man3/tomo-Int.onward.3
+++ b/man/man3/tomo-Int.onward.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Int.onward 3 2025-11-09 "Tomo man-pages"
+.TH Int.onward 3 2025-11-29 "Tomo man-pages"
.SH NAME
Int.onward \- iterate from a number onward
.SH LIBRARY
@@ -36,3 +36,5 @@ nums.insert(i)
stop if i == 10
assert nums[] == [5, 6, 7, 8, 9, 10]
.EE
+.SH SEE ALSO
+.BR Tomo-Int (3)
diff --git a/man/man3/tomo-Int.parse.3 b/man/man3/tomo-Int.parse.3
index d2fc563f..53713c78 100644
--- a/man/man3/tomo-Int.parse.3
+++ b/man/man3/tomo-Int.parse.3
@@ -2,14 +2,14 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Int.parse 3 2025-11-09 "Tomo man-pages"
+.TH Int.parse 3 2025-11-30 "Tomo man-pages"
.SH NAME
Int.parse \- convert text to integer
.SH LIBRARY
Tomo Standard Library
.SH SYNOPSIS
.nf
-.BI Int.parse\ :\ func(text:\ Text,\ remainder:\ &Text?\ =\ none\ ->\ Int?)
+.BI Int.parse\ :\ func(text:\ Text,\ base:\ Int?\ =\ none,\ remainder:\ &Text?\ =\ none\ ->\ Int?)
.fi
.SH DESCRIPTION
Converts a text representation of an integer into an integer.
@@ -23,6 +23,7 @@ lb lb lbx lb
l l l l.
Name Type Description Default
text Text The text containing the integer. -
+base Int? The numeric base to use when parsing the integer. If unspecified, the integer's base will be inferred from the text prefix. After any "+" or "-" sign, if the text begins with "0x", the base will be assumed to be 16, "0o" will assume base 8, "0b" will assume base 2, otherwise the base will be assumed to be 10. none
remainder &Text? If non-none, this argument will be set to the remainder of the text after the matching part. If none, parsing will only succeed if the entire text matches. none
.TE
.SH RETURN
@@ -42,4 +43,9 @@ assert Int.parse("asdf") == none
# Outside valid range:
assert Int8.parse("9999999") == none
+
+# Explicitly specifying base:
+assert Int.parse("10", base=16) == 16
.EE
+.SH SEE ALSO
+.BR Tomo-Int (3)
diff --git a/man/man3/tomo-Int.prev_prime.3 b/man/man3/tomo-Int.prev_prime.3
index b66a0235..87f7be36 100644
--- a/man/man3/tomo-Int.prev_prime.3
+++ b/man/man3/tomo-Int.prev_prime.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Int.prev_prime 3 2025-11-09 "Tomo man-pages"
+.TH Int.prev_prime 3 2025-11-29 "Tomo man-pages"
.SH NAME
Int.prev_prime \- get the previous prime
.SH LIBRARY
@@ -19,10 +19,10 @@ Finds the previous prime number less than the given integer. If there is no prev
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Int The integer before which to find the previous prime. -
+lb lb lbx
+l l l.
+Name Type Description
+x Int The integer before which to find the previous prime.
.TE
.SH RETURN
The previous prime number less than `x`, or `none` if `x` is less than 2.
@@ -34,3 +34,5 @@ This function is _probabilistic_, but the chances of getting an incorrect answer
.EX
assert (11).prev_prime() == 7
.EE
+.SH SEE ALSO
+.BR Tomo-Int (3)
diff --git a/man/man3/tomo-Int.sqrt.3 b/man/man3/tomo-Int.sqrt.3
index d1fd1023..6a3e7eaf 100644
--- a/man/man3/tomo-Int.sqrt.3
+++ b/man/man3/tomo-Int.sqrt.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Int.sqrt 3 2025-11-09 "Tomo man-pages"
+.TH Int.sqrt 3 2025-11-29 "Tomo man-pages"
.SH NAME
Int.sqrt \- square root
.SH LIBRARY
@@ -19,10 +19,10 @@ Calculates the nearest square root of an integer.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-x Int The integer whose square root is to be calculated. -
+lb lb lbx
+l l l.
+Name Type Description
+x Int The integer whose square root is to be calculated.
.TE
.SH RETURN
The integer part of the square root of `x`.
@@ -32,3 +32,5 @@ The integer part of the square root of `x`.
assert (16).sqrt() == 4
assert (17).sqrt() == 4
.EE
+.SH SEE ALSO
+.BR Tomo-Int (3)
diff --git a/man/man3/tomo-Int.to.3 b/man/man3/tomo-Int.to.3
index 804f5064..9c0fe4dc 100644
--- a/man/man3/tomo-Int.to.3
+++ b/man/man3/tomo-Int.to.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Int.to 3 2025-11-09 "Tomo man-pages"
+.TH Int.to 3 2025-11-29 "Tomo man-pages"
.SH NAME
Int.to \- iterate a range of integers
.SH LIBRARY
@@ -24,7 +24,7 @@ l l l l.
Name Type Description Default
first Int The starting value of the range. -
last Int The ending value of the range. -
-step Int? An optional step size to use. If unspecified or `none`, the step will be inferred to be `+1` if `last >= first`, otherwise `-1`. none
+step Int? An optional step size to use. If unspecified or \fBnone\fR, the step will be inferred to be \fB+1\fR if \fBlast >= first\fR, otherwise \fB-1\fR. none
.TE
.SH RETURN
An iterator function that returns each integer in the given range (inclusive).
@@ -42,3 +42,5 @@ assert [x for x in (2).to(5)] == [2, 3, 4, 5]
assert [x for x in (5).to(2)] == [5, 4, 3, 2]
assert [x for x in (2).to(5, step=2)] == [2, 4]
.EE
+.SH SEE ALSO
+.BR Tomo-Int (3)
diff --git a/man/man3/tomo-List.3 b/man/man3/tomo-List.3
new file mode 100644
index 00000000..3da6389f
--- /dev/null
+++ b/man/man3/tomo-List.3
@@ -0,0 +1,219 @@
+'\" t
+.\" Copyright (c) 2025 Bruce Hill
+.\" All rights reserved.
+.\"
+.TH List 3 2025-12-11 "Tomo man-pages"
+.SH NAME
+List \- a Tomo type
+.SH LIBRARY
+Tomo Standard Library
+.fi
+.SH METHODS
+
+.TP
+.BI List.binary_search\ :\ func(list:\ [T],\ by:\ func(x,y:&T->Int32)\ =\ T.compare\ ->\ Int)
+Performs a binary search on a sorted list.
+
+For more, see:
+.BR Tomo-List.binary_search (3)
+
+
+.TP
+.BI List.by\ :\ func(list:\ [T],\ step:\ Int\ ->\ [T])
+Creates a new list with elements spaced by the specified step value.
+
+For more, see:
+.BR Tomo-List.by (3)
+
+
+.TP
+.BI List.clear\ :\ func(list:\ @[T]\ ->\ Void)
+Clears all elements from the list.
+
+For more, see:
+.BR Tomo-List.clear (3)
+
+
+.TP
+.BI List.counts\ :\ func(list:\ [T]\ ->\ {T=Int})
+Counts the occurrences of each element in the list.
+
+For more, see:
+.BR Tomo-List.counts (3)
+
+
+.TP
+.BI List.find\ :\ func(list:\ [T],\ target:\ T\ ->\ Int?)
+Finds the index of the first occurrence of an element (if any).
+
+For more, see:
+.BR Tomo-List.find (3)
+
+
+.TP
+.BI List.from\ :\ func(list:\ [T],\ first:\ Int\ ->\ [T])
+Returns a slice of the list starting from a specified index.
+
+For more, see:
+.BR Tomo-List.from (3)
+
+
+.TP
+.BI List.has\ :\ func(list:\ [T],\ target:\ T\ ->\ Bool)
+Checks if the list has an element.
+
+For more, see:
+.BR Tomo-List.has (3)
+
+
+.TP
+.BI List.heap_pop\ :\ func(list:\ @[T],\ by:\ func(x,y:&T->Int32)\ =\ T.compare\ ->\ T?)
+Removes and returns the top element of a heap or \fBnone\fR if the list is empty. By default, this is the *minimum* value in the heap.
+
+For more, see:
+.BR Tomo-List.heap_pop (3)
+
+
+.TP
+.BI List.heap_push\ :\ func(list:\ @[T],\ item:\ T,\ by\ =\ T.compare\ ->\ Void)
+Adds an element to the heap and maintains the heap property. By default, this is a *minimum* heap.
+
+For more, see:
+.BR Tomo-List.heap_push (3)
+
+
+.TP
+.BI List.heapify\ :\ func(list:\ @[T],\ by:\ func(x,y:&T->Int32)\ =\ T.compare\ ->\ Void)
+Converts a list into a heap.
+
+For more, see:
+.BR Tomo-List.heapify (3)
+
+
+.TP
+.BI List.insert\ :\ func(list:\ @[T],\ item:\ T,\ at:\ Int\ =\ 0\ ->\ Void)
+Inserts an element at a specified position in the list.
+
+For more, see:
+.BR Tomo-List.insert (3)
+
+
+.TP
+.BI List.insert_all\ :\ func(list:\ @[T],\ items:\ [T],\ at:\ Int\ =\ 0\ ->\ Void)
+Inserts a list of items at a specified position in the list.
+
+For more, see:
+.BR Tomo-List.insert_all (3)
+
+
+.TP
+.BI List.pop\ :\ func(list:\ &[T],\ index:\ Int\ =\ -1\ ->\ T?)
+Removes and returns an item from the list. If the given index is present in the list, the item at that index will be removed and the list will become one element shorter.
+
+For more, see:
+.BR Tomo-List.pop (3)
+
+
+.TP
+.BI List.random\ :\ func(list:\ [T],\ random:\ func(min,max:Int64->Int64)?\ =\ none\ ->\ T)
+Selects a random element from the list.
+
+For more, see:
+.BR Tomo-List.random (3)
+
+
+.TP
+.BI List.remove_at\ :\ func(list:\ @[T],\ at:\ Int\ =\ -1,\ count:\ Int\ =\ 1\ ->\ Void)
+Removes elements from the list starting at a specified index.
+
+For more, see:
+.BR Tomo-List.remove_at (3)
+
+
+.TP
+.BI List.remove_item\ :\ func(list:\ @[T],\ item:\ T,\ max_count:\ Int\ =\ -1\ ->\ Void)
+Removes all occurrences of a specified item from the list.
+
+For more, see:
+.BR Tomo-List.remove_item (3)
+
+
+.TP
+.BI List.reversed\ :\ func(list:\ [T]\ ->\ [T])
+Returns a reversed slice of the list.
+
+For more, see:
+.BR Tomo-List.reversed (3)
+
+
+.TP
+.BI List.sample\ :\ func(list:\ [T],\ count:\ Int,\ weights:\ [Float64]?\ =\ none,\ random:\ func(->Float64)?\ =\ none\ ->\ [T])
+Selects a sample of elements from the list, optionally with weighted probabilities.
+
+For more, see:
+.BR Tomo-List.sample (3)
+
+
+.TP
+.BI List.shuffle\ :\ func(list:\ @[T],\ random:\ func(min,max:Int64->Int64)?\ =\ none\ ->\ Void)
+Shuffles the elements of the list in place.
+
+For more, see:
+.BR Tomo-List.shuffle (3)
+
+
+.TP
+.BI List.shuffled\ :\ func(list:\ [T],\ random:\ func(min,max:Int64->Int64)?\ =\ none\ ->\ [T])
+Creates a new list with elements shuffled.
+
+For more, see:
+.BR Tomo-List.shuffled (3)
+
+
+.TP
+.BI List.slice\ :\ func(list:\ [T],\ from:\ Int,\ to:\ Int\ ->\ [T])
+Returns a slice of the list spanning the given indices (inclusive).
+
+For more, see:
+.BR Tomo-List.slice (3)
+
+
+.TP
+.BI List.sort\ :\ func(list:\ @[T],\ by\ =\ T.compare\ ->\ Void)
+Sorts the elements of the list in place in ascending order (small to large).
+
+For more, see:
+.BR Tomo-List.sort (3)
+
+
+.TP
+.BI List.sorted\ :\ func(list:\ [T],\ by\ =\ T.compare\ ->\ [T])
+Creates a new list with elements sorted.
+
+For more, see:
+.BR Tomo-List.sorted (3)
+
+
+.TP
+.BI List.to\ :\ func(list:\ [T],\ last:\ Int\ ->\ [T])
+Returns a slice of the list from the start of the original list up to a specified index (inclusive).
+
+For more, see:
+.BR Tomo-List.to (3)
+
+
+.TP
+.BI List.unique\ :\ func(list:\ [T]\ ->\ {T})
+Returns a set of the unique elements of the list.
+
+For more, see:
+.BR Tomo-List.unique (3)
+
+
+.TP
+.BI List.where\ :\ func(list:\ [T],\ predicate:\ func(item:&T\ ->\ Bool)\ ->\ Int)
+Find the index of the first item that matches a predicate function (if any).
+
+For more, see:
+.BR Tomo-List.where (3)
+
diff --git a/man/man3/tomo-List.binary_search.3 b/man/man3/tomo-List.binary_search.3
index a13ec08c..ca92602d 100644
--- a/man/man3/tomo-List.binary_search.3
+++ b/man/man3/tomo-List.binary_search.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.binary_search 3 2025-11-09 "Tomo man-pages"
+.TH List.binary_search 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.binary_search \- binary search
.SH LIBRARY
@@ -34,3 +34,5 @@ assert [1, 3, 5, 7, 9].binary_search(5) == 3
assert [1, 3, 5, 7, 9].binary_search(-999) == 1
assert [1, 3, 5, 7, 9].binary_search(999) == 6
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.by.3 b/man/man3/tomo-List.by.3
index 28373446..463ea9ed 100644
--- a/man/man3/tomo-List.by.3
+++ b/man/man3/tomo-List.by.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.by 3 2025-11-09 "Tomo man-pages"
+.TH List.by 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.by \- slice by a step value
.SH LIBRARY
@@ -19,11 +19,11 @@ Creates a new list with elements spaced by the specified step value.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-list [T] The original list. -
-step Int The step value for selecting elements. -
+lb lb lbx
+l l l.
+Name Type Description
+list [T] The original list.
+step Int The step value for selecting elements.
.TE
.SH RETURN
A new list with every `step`-th element from the original list.
@@ -32,3 +32,5 @@ A new list with every `step`-th element from the original list.
.EX
assert [1, 2, 3, 4, 5, 6].by(2) == [1, 3, 5]
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.clear.3 b/man/man3/tomo-List.clear.3
index 6c2eeb3e..b4237e45 100644
--- a/man/man3/tomo-List.clear.3
+++ b/man/man3/tomo-List.clear.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.clear 3 2025-11-09 "Tomo man-pages"
+.TH List.clear 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.clear \- clear a list
.SH LIBRARY
@@ -19,10 +19,10 @@ Clears all elements from the list.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-list @[T] The mutable reference to the list to be cleared. -
+lb lb lbx
+l l l.
+Name Type Description
+list @[T] The mutable reference to the list to be cleared.
.TE
.SH RETURN
Nothing.
@@ -31,3 +31,5 @@ Nothing.
.EX
my_list.clear()
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.counts.3 b/man/man3/tomo-List.counts.3
index b64a29f8..54698085 100644
--- a/man/man3/tomo-List.counts.3
+++ b/man/man3/tomo-List.counts.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.counts 3 2025-11-09 "Tomo man-pages"
+.TH List.counts 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.counts \- count occurrences
.SH LIBRARY
@@ -19,10 +19,10 @@ Counts the occurrences of each element in the list.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-list [T] The list to count elements in. -
+lb lb lbx
+l l l.
+Name Type Description
+list [T] The list to count elements in.
.TE
.SH RETURN
A table mapping each element to its count.
@@ -31,3 +31,5 @@ A table mapping each element to its count.
.EX
assert [10, 20, 30, 30, 30].counts() == {10=1, 20=1, 30=3}
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.find.3 b/man/man3/tomo-List.find.3
index 76c8c0fb..eece41a1 100644
--- a/man/man3/tomo-List.find.3
+++ b/man/man3/tomo-List.find.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.find 3 2025-11-09 "Tomo man-pages"
+.TH List.find 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.find \- find an element's index
.SH LIBRARY
@@ -19,11 +19,11 @@ Finds the index of the first occurrence of an element (if any).
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-list [T] The list to search through. -
-target T The item to search for. -
+lb lb lbx
+l l l.
+Name Type Description
+list [T] The list to search through.
+target T The item to search for.
.TE
.SH RETURN
The index of the first occurrence or `none` if not found.
@@ -33,3 +33,5 @@ The index of the first occurrence or `none` if not found.
assert [10, 20, 30, 40, 50].find(20) == 2
assert [10, 20, 30, 40, 50].find(9999) == none
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.from.3 b/man/man3/tomo-List.from.3
index 516dd140..e63a089c 100644
--- a/man/man3/tomo-List.from.3
+++ b/man/man3/tomo-List.from.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.from 3 2025-11-09 "Tomo man-pages"
+.TH List.from 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.from \- slice an array from a start index
.SH LIBRARY
@@ -19,11 +19,11 @@ Returns a slice of the list starting from a specified index.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-list [T] The original list. -
-first Int The index to start from. -
+lb lb lbx
+l l l.
+Name Type Description
+list [T] The original list.
+first Int The index to start from.
.TE
.SH RETURN
A new list starting from the specified index.
@@ -32,3 +32,5 @@ A new list starting from the specified index.
.EX
assert [10, 20, 30, 40, 50].from(3) == [30, 40, 50]
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.has.3 b/man/man3/tomo-List.has.3
index cd04b66b..6406e294 100644
--- a/man/man3/tomo-List.has.3
+++ b/man/man3/tomo-List.has.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.has 3 2025-11-09 "Tomo man-pages"
+.TH List.has 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.has \- check for member
.SH LIBRARY
@@ -19,11 +19,11 @@ Checks if the list has an element.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-list [T] The list to check. -
-target T The element to check for. -
+lb lb lbx
+l l l.
+Name Type Description
+list [T] The list to check.
+target T The element to check for.
.TE
.SH RETURN
`yes` if the list has the element, `no` otherwise.
@@ -32,3 +32,5 @@ target T The element to check for. -
.EX
assert [10, 20, 30].has(20) == yes
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.heap_pop.3 b/man/man3/tomo-List.heap_pop.3
index d4662a45..2d6621ee 100644
--- a/man/man3/tomo-List.heap_pop.3
+++ b/man/man3/tomo-List.heap_pop.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.heap_pop 3 2025-11-09 "Tomo man-pages"
+.TH List.heap_pop 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.heap_pop \- heap pop
.SH LIBRARY
@@ -34,3 +34,5 @@ my_heap := [30, 10, 20]
my_heap.heapify()
assert my_heap.heap_pop() == 10
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.heap_push.3 b/man/man3/tomo-List.heap_push.3
index 8a5d098a..108e9007 100644
--- a/man/man3/tomo-List.heap_push.3
+++ b/man/man3/tomo-List.heap_push.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.heap_push 3 2025-11-09 "Tomo man-pages"
+.TH List.heap_push 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.heap_push \- heap push
.SH LIBRARY
@@ -33,3 +33,5 @@ Nothing.
.EX
my_heap.heap_push(10)
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.heapify.3 b/man/man3/tomo-List.heapify.3
index e1a26082..5f7f47c9 100644
--- a/man/man3/tomo-List.heapify.3
+++ b/man/man3/tomo-List.heapify.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.heapify 3 2025-11-09 "Tomo man-pages"
+.TH List.heapify 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.heapify \- convert a list into a heap
.SH LIBRARY
@@ -33,3 +33,5 @@ Nothing.
my_heap := [30, 10, 20]
my_heap.heapify()
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.insert.3 b/man/man3/tomo-List.insert.3
index 5876bb80..f885c1eb 100644
--- a/man/man3/tomo-List.insert.3
+++ b/man/man3/tomo-List.insert.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.insert 3 2025-11-09 "Tomo man-pages"
+.TH List.insert 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.insert \- add an item to a list
.SH LIBRARY
@@ -41,3 +41,5 @@ assert list == [10, 20, 30]
list.insert(999, at=2)
assert list == [10, 999, 20, 30]
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.insert_all.3 b/man/man3/tomo-List.insert_all.3
index 0c5e2b97..145ccd5b 100644
--- a/man/man3/tomo-List.insert_all.3
+++ b/man/man3/tomo-List.insert_all.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.insert_all 3 2025-11-09 "Tomo man-pages"
+.TH List.insert_all 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.insert_all \- add multiple items to a list
.SH LIBRARY
@@ -41,3 +41,5 @@ assert list == [10, 20, 30, 40]
list.insert_all([99, 100], at=2)
assert list == [10, 99, 100, 20, 30, 40]
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.pop.3 b/man/man3/tomo-List.pop.3
index c9623752..aabe249d 100644
--- a/man/man3/tomo-List.pop.3
+++ b/man/man3/tomo-List.pop.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.pop 3 2025-11-09 "Tomo man-pages"
+.TH List.pop 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.pop \- pop an item from a list
.SH LIBRARY
@@ -41,3 +41,5 @@ assert list[] == [10, 20, 30]
assert list.pop(index=2) == 20
assert list[] == [10, 30]
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.random.3 b/man/man3/tomo-List.random.3
index 44ae1377..55702485 100644
--- a/man/man3/tomo-List.random.3
+++ b/man/man3/tomo-List.random.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.random 3 2025-11-09 "Tomo man-pages"
+.TH List.random 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.random \- pick a random element
.SH LIBRARY
@@ -23,7 +23,7 @@ lb lb lbx lb
l l l l.
Name Type Description Default
list [T] The list from which to select a random element. -
-random func(min,max:Int64->Int64)? If provided, this function will be used to get a random index in the list. Returned values must be between `min` and `max` (inclusive). (Used for deterministic pseudorandom number generation) none
+random func(min,max:Int64->Int64)? If provided, this function will be used to get a random index in the list. Returned values must be between \fBmin\fR and \fBmax\fR (inclusive). (Used for deterministic pseudorandom number generation) none
.TE
.SH RETURN
A random element from the list.
@@ -32,3 +32,5 @@ A random element from the list.
.EX
assert [10, 20, 30].random() == 20
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.remove_at.3 b/man/man3/tomo-List.remove_at.3
index 236a6d9e..f0695836 100644
--- a/man/man3/tomo-List.remove_at.3
+++ b/man/man3/tomo-List.remove_at.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.remove_at 3 2025-11-09 "Tomo man-pages"
+.TH List.remove_at 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.remove_at \- remove an item by index
.SH LIBRARY
@@ -41,3 +41,5 @@ assert list == [10, 30, 40, 50]
list.remove_at(2, count=2)
assert list == [10, 50]
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.remove_item.3 b/man/man3/tomo-List.remove_item.3
index 92aded13..12662797 100644
--- a/man/man3/tomo-List.remove_item.3
+++ b/man/man3/tomo-List.remove_item.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.remove_item 3 2025-11-09 "Tomo man-pages"
+.TH List.remove_item 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.remove_item \- remove an item by value
.SH LIBRARY
@@ -41,3 +41,5 @@ assert list == [20, 20, 30]
list.remove_item(20, max_count=1)
assert list == [20, 30]
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.reversed.3 b/man/man3/tomo-List.reversed.3
index 406963fd..f0450007 100644
--- a/man/man3/tomo-List.reversed.3
+++ b/man/man3/tomo-List.reversed.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.reversed 3 2025-11-09 "Tomo man-pages"
+.TH List.reversed 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.reversed \- get a reversed list
.SH LIBRARY
@@ -19,10 +19,10 @@ Returns a reversed slice of the list.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-list [T] The list to be reversed. -
+lb lb lbx
+l l l.
+Name Type Description
+list [T] The list to be reversed.
.TE
.SH RETURN
A slice of the list with elements in reverse order.
@@ -31,3 +31,5 @@ A slice of the list with elements in reverse order.
.EX
assert [10, 20, 30].reversed() == [30, 20, 10]
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.sample.3 b/man/man3/tomo-List.sample.3
index c090d8b7..126e6ede 100644
--- a/man/man3/tomo-List.sample.3
+++ b/man/man3/tomo-List.sample.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.sample 3 2025-11-09 "Tomo man-pages"
+.TH List.sample 3 2025-12-11 "Tomo man-pages"
.SH NAME
List.sample \- weighted random choices
.SH LIBRARY
@@ -25,7 +25,7 @@ Name Type Description Default
list [T] The list to sample from. -
count Int The number of elements to sample. -
weights [Float64]? The probability weights for each element in the list. These values do not need to add up to any particular number, they are relative weights. If no weights are given, elements will be sampled with uniform probability. none
-random func(->Float64)? If provided, this function will be used to get random values for sampling the list. The provided function should return random numbers between `0.0` (inclusive) and `1.0` (exclusive). (Used for deterministic pseudorandom number generation) none
+random func(->Float64)? If provided, this function will be used to get random values for sampling the list. The provided function should return random numbers between \fB0.0\fR (inclusive) and \fB1.0\fR (exclusive). (Used for deterministic pseudorandom number generation) none
.TE
.SH RETURN
A list of sampled elements from the list.
@@ -37,3 +37,5 @@ Errors will be raised if any of the following conditions occurs: - The given lis
.EX
assert [10, 20, 30].sample(2, weights=[90%, 5%, 5%]) == [10, 10]
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.shuffle.3 b/man/man3/tomo-List.shuffle.3
index ae280483..112bf88d 100644
--- a/man/man3/tomo-List.shuffle.3
+++ b/man/man3/tomo-List.shuffle.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.shuffle 3 2025-11-09 "Tomo man-pages"
+.TH List.shuffle 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.shuffle \- shuffle a list in place
.SH LIBRARY
@@ -23,7 +23,7 @@ lb lb lbx lb
l l l l.
Name Type Description Default
list @[T] The mutable reference to the list to be shuffled. -
-random func(min,max:Int64->Int64)? If provided, this function will be used to get a random index in the list. Returned values must be between `min` and `max` (inclusive). (Used for deterministic pseudorandom number generation) none
+random func(min,max:Int64->Int64)? If provided, this function will be used to get a random index in the list. Returned values must be between \fBmin\fR and \fBmax\fR (inclusive). (Used for deterministic pseudorandom number generation) none
.TE
.SH RETURN
Nothing.
@@ -32,3 +32,5 @@ Nothing.
.EX
list.shuffle()
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.shuffled.3 b/man/man3/tomo-List.shuffled.3
index caaa90f2..98fef55f 100644
--- a/man/man3/tomo-List.shuffled.3
+++ b/man/man3/tomo-List.shuffled.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.shuffled 3 2025-11-09 "Tomo man-pages"
+.TH List.shuffled 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.shuffled \- return a shuffled list
.SH LIBRARY
@@ -23,7 +23,7 @@ lb lb lbx lb
l l l l.
Name Type Description Default
list [T] The list to be shuffled. -
-random func(min,max:Int64->Int64)? If provided, this function will be used to get a random index in the list. Returned values must be between `min` and `max` (inclusive). (Used for deterministic pseudorandom number generation) none
+random func(min,max:Int64->Int64)? If provided, this function will be used to get a random index in the list. Returned values must be between \fBmin\fR and \fBmax\fR (inclusive). (Used for deterministic pseudorandom number generation) none
.TE
.SH RETURN
A new list with shuffled elements.
@@ -32,3 +32,5 @@ A new list with shuffled elements.
.EX
assert [10, 20, 30, 40].shuffled() == [40, 10, 30, 20]
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.slice.3 b/man/man3/tomo-List.slice.3
index 6d560b21..5025733a 100644
--- a/man/man3/tomo-List.slice.3
+++ b/man/man3/tomo-List.slice.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.slice 3 2025-11-09 "Tomo man-pages"
+.TH List.slice 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.slice \- get a slice of a list
.SH LIBRARY
@@ -19,12 +19,12 @@ Returns a slice of the list spanning the given indices (inclusive).
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-list [T] The original list. -
-from Int The first index to include. -
-to Int The last index to include. -
+lb lb lbx
+l l l.
+Name Type Description
+list [T] The original list.
+from Int The first index to include.
+to Int The last index to include.
.TE
.SH RETURN
A new list spanning the given indices. Note: negative indices are counted from the back of the list, so `-1` refers to the last element, `-2` the second-to-last, and so on.
@@ -34,3 +34,5 @@ A new list spanning the given indices. Note: negative indices are counted from t
assert [10, 20, 30, 40, 50].slice(2, 4) == [20, 30, 40]
assert [10, 20, 30, 40, 50].slice(-3, -2) == [30, 40]
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.sort.3 b/man/man3/tomo-List.sort.3
index 355d3bff..3e93c86e 100644
--- a/man/man3/tomo-List.sort.3
+++ b/man/man3/tomo-List.sort.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.sort 3 2025-11-09 "Tomo man-pages"
+.TH List.sort 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.sort \- sort a list
.SH LIBRARY
@@ -37,3 +37,5 @@ assert list == [-30, 10, 20, 40]
list.sort(func(a,b:&Int): a.abs() <> b.abs())
assert list == [10, 20, -30, 40]
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.sorted.3 b/man/man3/tomo-List.sorted.3
index 264743f4..f6fe93a4 100644
--- a/man/man3/tomo-List.sorted.3
+++ b/man/man3/tomo-List.sorted.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.sorted 3 2025-11-09 "Tomo man-pages"
+.TH List.sorted 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.sorted \- sorted copy of a list
.SH LIBRARY
@@ -35,3 +35,5 @@ assert [40, 10, -30, 20].sorted(
func(a,b:&Int): a.abs() <> b.abs()
) == [10, 20, -30, 40]
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.to.3 b/man/man3/tomo-List.to.3
index 658d2d63..5e3e3d77 100644
--- a/man/man3/tomo-List.to.3
+++ b/man/man3/tomo-List.to.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.to 3 2025-11-09 "Tomo man-pages"
+.TH List.to 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.to \- slice a list to an end index
.SH LIBRARY
@@ -19,11 +19,11 @@ Returns a slice of the list from the start of the original list up to a specifie
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-list [T] The original list. -
-last Int The index up to which elements should be included. -
+lb lb lbx
+l l l.
+Name Type Description
+list [T] The original list.
+last Int The index up to which elements should be included.
.TE
.SH RETURN
A new list containing elements from the start up to the specified index.
@@ -33,3 +33,5 @@ A new list containing elements from the start up to the specified index.
assert [10, 20, 30, 40, 50].to(3) == [10, 20, 30]
assert [10, 20, 30, 40, 50].to(-2) == [10, 20, 30, 40]
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.unique.3 b/man/man3/tomo-List.unique.3
index efe1157d..80b9b9f5 100644
--- a/man/man3/tomo-List.unique.3
+++ b/man/man3/tomo-List.unique.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.unique 3 2025-11-09 "Tomo man-pages"
+.TH List.unique 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.unique \- get the unique items in a list
.SH LIBRARY
@@ -19,10 +19,10 @@ Returns a set of the unique elements of the list.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-list [T] The list to process. -
+lb lb lbx
+l l l.
+Name Type Description
+list [T] The list to process.
.TE
.SH RETURN
A set of the unique elements from the list.
@@ -31,3 +31,5 @@ A set of the unique elements from the list.
.EX
assert [10, 20, 10, 10, 30].unique() == {10, 20, 30}
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-List.where.3 b/man/man3/tomo-List.where.3
index 837d30ea..9a02aaaf 100644
--- a/man/man3/tomo-List.where.3
+++ b/man/man3/tomo-List.where.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH List.where 3 2025-11-09 "Tomo man-pages"
+.TH List.where 3 2025-11-29 "Tomo man-pages"
.SH NAME
List.where \- find an index where a predicate matches
.SH LIBRARY
@@ -19,11 +19,11 @@ Find the index of the first item that matches a predicate function (if any).
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-list [T] The list to search through. -
-predicate func(item:&T -> Bool) A function that returns `yes` if the item's index should be returned or `no` if it should not. -
+lb lb lbx
+l l l.
+Name Type Description
+list [T] The list to search through.
+predicate func(item:&T -> Bool) A function that returns \fByes\fR if the item's index should be returned or \fBno\fR if it should not.
.TE
.SH RETURN
Returns the index of the first item where the predicate is true or `none` if no item matches.
@@ -33,3 +33,5 @@ Returns the index of the first item where the predicate is true or `none` if no
assert [4, 5, 6].where(func(i:&Int): i.is_prime()) == 5
assert [4, 6, 8].find(func(i:&Int): i.is_prime()) == none
.EE
+.SH SEE ALSO
+.BR Tomo-List (3)
diff --git a/man/man3/tomo-Path.3 b/man/man3/tomo-Path.3
new file mode 100644
index 00000000..ae9b6d51
--- /dev/null
+++ b/man/man3/tomo-Path.3
@@ -0,0 +1,347 @@
+'\" t
+.\" Copyright (c) 2025 Bruce Hill
+.\" All rights reserved.
+.\"
+.TH Path 3 2025-12-07 "Tomo man-pages"
+.SH NAME
+Path \- a Tomo type
+.SH LIBRARY
+Tomo Standard Library
+.fi
+.SH METHODS
+
+.TP
+.BI Path.accessed\ :\ func(path:\ Path,\ follow_symlinks:\ Bool\ =\ yes\ ->\ Int64?)
+Gets the file access time of a file.
+
+For more, see:
+.BR Tomo-Path.accessed (3)
+
+
+.TP
+.BI Path.append\ :\ func(path:\ Path,\ text:\ Text,\ permissions:\ Int32\ =\ Int32(0o644)\ ->\ Result)
+Appends the given text to the file at the specified path, creating the file if it doesn't already exist. Failure to write will result in a runtime error.
+
+For more, see:
+.BR Tomo-Path.append (3)
+
+
+.TP
+.BI Path.append_bytes\ :\ func(path:\ Path,\ bytes:\ [Byte],\ permissions:\ Int32\ =\ Int32(0o644)\ ->\ Result)
+Appends the given bytes to the file at the specified path, creating the file if it doesn't already exist. Failure to write will result in a runtime error.
+
+For more, see:
+.BR Tomo-Path.append_bytes (3)
+
+
+.TP
+.BI Path.base_name\ :\ func(path:\ Path\ ->\ Text)
+Returns the base name of the file or directory at the specified path.
+
+For more, see:
+.BR Tomo-Path.base_name (3)
+
+
+.TP
+.BI Path.by_line\ :\ func(path:\ Path\ ->\ func(->Text?)?)
+Returns an iterator that can be used to iterate over a file one line at a time, or returns none if the file could not be opened.
+
+For more, see:
+.BR Tomo-Path.by_line (3)
+
+
+.TP
+.BI Path.can_execute\ :\ func(path:\ Path\ ->\ Bool)
+Returns whether or not a file can be executed by the current user/group.
+
+For more, see:
+.BR Tomo-Path.can_execute (3)
+
+
+.TP
+.BI Path.can_read\ :\ func(path:\ Path\ ->\ Bool)
+Returns whether or not a file can be read by the current user/group.
+
+For more, see:
+.BR Tomo-Path.can_read (3)
+
+
+.TP
+.BI Path.can_write\ :\ func(path:\ Path\ ->\ Bool)
+Returns whether or not a file can be written by the current user/group.
+
+For more, see:
+.BR Tomo-Path.can_write (3)
+
+
+.TP
+.BI Path.changed\ :\ func(path:\ Path,\ follow_symlinks:\ Bool\ =\ yes\ ->\ Int64?)
+Gets the file change time of a file.
+
+For more, see:
+.BR Tomo-Path.changed (3)
+
+
+.TP
+.BI Path.child\ :\ func(path:\ Path,\ child:\ Text\ ->\ Path)
+Return a path that is a child of another path.
+
+For more, see:
+.BR Tomo-Path.child (3)
+
+
+.TP
+.BI Path.children\ :\ func(path:\ Path,\ include_hidden\ =\ no\ ->\ [Path])
+Returns a list of children (files and directories) within the directory at the specified path. Optionally includes hidden files.
+
+For more, see:
+.BR Tomo-Path.children (3)
+
+
+.TP
+.BI Path.create_directory\ :\ func(path:\ Path,\ permissions\ =\ Int32(0o755),\ recursive\ =\ yes\ ->\ Result)
+Creates a new directory at the specified path with the given permissions. If any of the parent directories do not exist, they will be created as needed.
+
+For more, see:
+.BR Tomo-Path.create_directory (3)
+
+
+.TP
+.BI Path.current_dir\ :\ func(->\ Path)
+Creates a new directory at the specified path with the given permissions. If any of the parent directories do not exist, they will be created as needed.
+
+For more, see:
+.BR Tomo-Path.current_dir (3)
+
+
+.TP
+.BI Path.exists\ :\ func(path:\ Path\ ->\ Bool)
+Checks if a file or directory exists at the specified path.
+
+For more, see:
+.BR Tomo-Path.exists (3)
+
+
+.TP
+.BI Path.expand_home\ :\ func(path:\ Path\ ->\ Path)
+For home-based paths (those starting with \fB~\fR), expand the path to replace the tilde with and absolute path to the user's \fB$HOME\fR directory.
+
+For more, see:
+.BR Tomo-Path.expand_home (3)
+
+
+.TP
+.BI Path.extension\ :\ func(path:\ Path,\ full:\ Bool\ =\ yes\ ->\ Text)
+Returns the file extension of the file at the specified path. Optionally returns the full extension.
+
+For more, see:
+.BR Tomo-Path.extension (3)
+
+
+.TP
+.BI Path.files\ :\ func(path:\ Path,\ include_hidden:\ Bool\ =\ no\ ->\ [Path])
+Returns a list of files within the directory at the specified path. Optionally includes hidden files.
+
+For more, see:
+.BR Tomo-Path.files (3)
+
+
+.TP
+.BI Path.from_components\ :\ func(components:\ [Text]\ ->\ Path)
+Returns a path built from a list of path components.
+
+For more, see:
+.BR Tomo-Path.from_components (3)
+
+
+.TP
+.BI Path.glob\ :\ func(path:\ Path\ ->\ [Path])
+Perform a globbing operation and return a list of matching paths. Some glob specific details: - The paths "." and ".." are *not* included in any globbing results. - Files or directories that begin with "." will not match \fB*\fR, but will match \fB.*\fR. - Globs do support \fB{a,b}\fR syntax for matching files that match any of several choices of patterns. - The shell-style syntax \fB**\fR for matching subdirectories is not supported.
+
+For more, see:
+.BR Tomo-Path.glob (3)
+
+
+.TP
+.BI Path.group\ :\ func(path:\ Path,\ follow_symlinks:\ Bool\ =\ yes\ ->\ Text?)
+Get the owning group of a file or directory.
+
+For more, see:
+.BR Tomo-Path.group (3)
+
+
+.TP
+.BI Path.has_extension\ :\ func(path:\ Path,\ extension:\ Text\ ->\ Bool)
+Return whether or not a path has a given file extension.
+
+For more, see:
+.BR Tomo-Path.has_extension (3)
+
+
+.TP
+.BI Path.is_directory\ :\ func(path:\ Path,\ follow_symlinks\ =\ yes\ ->\ Bool)
+Checks if the path represents a directory. Optionally follows symbolic links.
+
+For more, see:
+.BR Tomo-Path.is_directory (3)
+
+
+.TP
+.BI Path.is_file\ :\ func(path:\ Path,\ follow_symlinks\ =\ yes\ ->\ Bool)
+Checks if the path represents a file. Optionally follows symbolic links.
+
+For more, see:
+.BR Tomo-Path.is_file (3)
+
+
+.TP
+.BI Path.is_socket\ :\ func(path:\ Path,\ follow_symlinks\ =\ yes\ ->\ Bool)
+Checks if the path represents a socket. Optionally follows symbolic links.
+
+For more, see:
+.BR Tomo-Path.is_socket (3)
+
+
+.TP
+.BI Path.is_symlink\ :\ func(path:\ Path\ ->\ Bool)
+Checks if the path represents a symbolic link.
+
+For more, see:
+.BR Tomo-Path.is_symlink (3)
+
+
+.TP
+.BI Path.lines\ :\ func(path:\ Path\ ->\ [Text]?)
+Returns a list with the lines of text in a file or returns none if the file could not be opened.
+
+For more, see:
+.BR Tomo-Path.lines (3)
+
+
+.TP
+.BI Path.modified\ :\ func(path:\ Path,\ follow_symlinks:\ Bool\ =\ yes\ ->\ Int64?)
+Gets the file modification time of a file.
+
+For more, see:
+.BR Tomo-Path.modified (3)
+
+
+.TP
+.BI Path.owner\ :\ func(path:\ Path,\ follow_symlinks:\ Bool\ =\ yes\ ->\ Text?)
+Get the owning user of a file or directory.
+
+For more, see:
+.BR Tomo-Path.owner (3)
+
+
+.TP
+.BI Path.parent\ :\ func(path:\ Path\ ->\ Path?)
+Returns the parent directory of the file or directory at the specified path.
+
+For more, see:
+.BR Tomo-Path.parent (3)
+
+
+.TP
+.BI Path.read\ :\ func(path:\ Path\ ->\ Text?)
+Reads the contents of the file at the specified path or none if the file could not be read.
+
+For more, see:
+.BR Tomo-Path.read (3)
+
+
+.TP
+.BI Path.read_bytes\ :\ func(path:\ Path,\ limit:\ Int?\ =\ none\ ->\ [Byte]?)
+Reads the contents of the file at the specified path or none if the file could not be read.
+
+For more, see:
+.BR Tomo-Path.read_bytes (3)
+
+
+.TP
+.BI Path.relative_to\ :\ func(path:\ Path,\ relative_to\ =\ (./)\ ->\ Path)
+Returns the path relative to a given base path. By default, the base path is the current directory.
+
+For more, see:
+.BR Tomo-Path.relative_to (3)
+
+
+.TP
+.BI Path.remove\ :\ func(path:\ Path,\ ignore_missing\ =\ no\ ->\ Result)
+Removes the file or directory at the specified path. A runtime error is raised if something goes wrong.
+
+For more, see:
+.BR Tomo-Path.remove (3)
+
+
+.TP
+.BI Path.resolved\ :\ func(path:\ Path,\ relative_to\ =\ (./)\ ->\ Path)
+Resolves the absolute path of the given path relative to a base path. By default, the base path is the current directory.
+
+For more, see:
+.BR Tomo-Path.resolved (3)
+
+
+.TP
+.BI Path.set_owner\ :\ func(path:\ Path,\ owner:\ Text?\ =\ none,\ group:\ Text?\ =\ none,\ follow_symlinks:\ Bool\ =\ yes\ ->\ Result)
+Set the owning user and/or group for a path.
+
+For more, see:
+.BR Tomo-Path.set_owner (3)
+
+
+.TP
+.BI Path.sibling\ :\ func(path:\ Path,\ name:\ Text\ ->\ Path)
+Return a path that is a sibling of another path (i.e. has the same parent, but a different name). This is equivalent to \fB.parent().child(name)\fR
+
+For more, see:
+.BR Tomo-Path.sibling (3)
+
+
+.TP
+.BI Path.subdirectories\ :\ func(path:\ Path,\ include_hidden\ =\ no\ ->\ [Path])
+Returns a list of subdirectories within the directory at the specified path. Optionally includes hidden subdirectories.
+
+For more, see:
+.BR Tomo-Path.subdirectories (3)
+
+
+.TP
+.BI Path.unique_directory\ :\ func(path:\ Path\ ->\ Path)
+Generates a unique directory path based on the given path. Useful for creating temporary directories.
+
+For more, see:
+.BR Tomo-Path.unique_directory (3)
+
+
+.TP
+.BI Path.write\ :\ func(path:\ Path,\ text:\ Text,\ permissions\ =\ Int32(0o644)\ ->\ Result)
+Writes the given text to the file at the specified path, creating the file if it doesn't already exist. Sets the file permissions as specified. If the file writing cannot be successfully completed, a runtime error is raised.
+
+For more, see:
+.BR Tomo-Path.write (3)
+
+
+.TP
+.BI Path.write_bytes\ :\ func(path:\ Path,\ bytes:\ [Byte],\ permissions\ =\ Int32(0o644)\ ->\ Result)
+Writes the given bytes to the file at the specified path, creating the file if it doesn't already exist. Sets the file permissions as specified. If the file writing cannot be successfully completed, a runtime error is raised.
+
+For more, see:
+.BR Tomo-Path.write_bytes (3)
+
+
+.TP
+.BI Path.write_unique\ :\ func(path:\ Path,\ text:\ Text\ ->\ Path)
+Writes the given text to a unique file path based on the specified path. The file is created if it doesn't exist. This is useful for creating temporary files.
+
+For more, see:
+.BR Tomo-Path.write_unique (3)
+
+
+.TP
+.BI Path.write_unique_bytes\ :\ func(path:\ Path,\ bytes:\ [Byte]\ ->\ Path)
+Writes the given bytes to a unique file path based on the specified path. The file is created if it doesn't exist. This is useful for creating temporary files.
+
+For more, see:
+.BR Tomo-Path.write_unique_bytes (3)
+
diff --git a/man/man3/tomo-Path.accessed.3 b/man/man3/tomo-Path.accessed.3
index 866a6c47..0c09b7cf 100644
--- a/man/man3/tomo-Path.accessed.3
+++ b/man/man3/tomo-Path.accessed.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.accessed 3 2025-11-09 "Tomo man-pages"
+.TH Path.accessed 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.accessed \- access time
.SH LIBRARY
@@ -33,3 +33,5 @@ A 64-bit unix epoch timestamp representing when the file or directory was last a
assert (./file.txt).accessed() == 1704221100
assert (./not-a-file).accessed() == none
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.append.3 b/man/man3/tomo-Path.append.3
index 0073718b..d11169b0 100644
--- a/man/man3/tomo-Path.append.3
+++ b/man/man3/tomo-Path.append.3
@@ -2,14 +2,14 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.append 3 2025-11-09 "Tomo man-pages"
+.TH Path.append 3 2025-12-07 "Tomo man-pages"
.SH NAME
Path.append \- append to a file
.SH LIBRARY
Tomo Standard Library
.SH SYNOPSIS
.nf
-.BI Path.append\ :\ func(path:\ Path,\ text:\ Text,\ permissions:\ Int32\ =\ Int32(0o644)\ ->\ Void)
+.BI Path.append\ :\ func(path:\ Path,\ text:\ Text,\ permissions:\ Int32\ =\ Int32(0o644)\ ->\ Result)
.fi
.SH DESCRIPTION
Appends the given text to the file at the specified path, creating the file if it doesn't already exist. Failure to write will result in a runtime error.
@@ -27,9 +27,11 @@ text Text The text to append to the file. -
permissions Int32 The permissions to set on the file if it is being created. Int32(0o644)
.TE
.SH RETURN
-Nothing.
+Either `Success` or `Failure(reason)`.
.SH EXAMPLES
.EX
-(./log.txt).append("extra line$(\[rs]n)")
+(./log.txt).append("extra line\[rs]n")!
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.append_bytes.3 b/man/man3/tomo-Path.append_bytes.3
index ee63c089..c89cf08c 100644
--- a/man/man3/tomo-Path.append_bytes.3
+++ b/man/man3/tomo-Path.append_bytes.3
@@ -2,14 +2,14 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.append_bytes 3 2025-11-09 "Tomo man-pages"
+.TH Path.append_bytes 3 2025-12-07 "Tomo man-pages"
.SH NAME
Path.append_bytes \- append bytes to a file
.SH LIBRARY
Tomo Standard Library
.SH SYNOPSIS
.nf
-.BI Path.append_bytes\ :\ func(path:\ Path,\ bytes:\ [Byte],\ permissions:\ Int32\ =\ Int32(0o644)\ ->\ Void)
+.BI Path.append_bytes\ :\ func(path:\ Path,\ bytes:\ [Byte],\ permissions:\ Int32\ =\ Int32(0o644)\ ->\ Result)
.fi
.SH DESCRIPTION
Appends the given bytes to the file at the specified path, creating the file if it doesn't already exist. Failure to write will result in a runtime error.
@@ -27,9 +27,11 @@ bytes [Byte] The bytes to append to the file. -
permissions Int32 The permissions to set on the file if it is being created. Int32(0o644)
.TE
.SH RETURN
-Nothing.
+Either `Success` or `Failure(reason)`.
.SH EXAMPLES
.EX
-(./log.txt).append_bytes([104, 105])
+(./log.txt).append_bytes([104, 105])!
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.base_name.3 b/man/man3/tomo-Path.base_name.3
index dbd09e8d..f557a971 100644
--- a/man/man3/tomo-Path.base_name.3
+++ b/man/man3/tomo-Path.base_name.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.base_name 3 2025-11-09 "Tomo man-pages"
+.TH Path.base_name 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.base_name \- base name of a file
.SH LIBRARY
@@ -19,10 +19,10 @@ Returns the base name of the file or directory at the specified path.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-path Path The path of the file or directory. -
+lb lb lbx
+l l l.
+Name Type Description
+path Path The path of the file or directory.
.TE
.SH RETURN
The base name of the file or directory.
@@ -31,3 +31,5 @@ The base name of the file or directory.
.EX
assert (./path/to/file.txt).base_name() == "file.txt"
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.by_line.3 b/man/man3/tomo-Path.by_line.3
index 476de256..46a47d8c 100644
--- a/man/man3/tomo-Path.by_line.3
+++ b/man/man3/tomo-Path.by_line.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.by_line 3 2025-11-09 "Tomo man-pages"
+.TH Path.by_line 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.by_line \- iterate by line
.SH LIBRARY
@@ -19,10 +19,10 @@ Returns an iterator that can be used to iterate over a file one line at a time,
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-path Path The path of the file. -
+lb lb lbx
+l l l.
+Name Type Description
+path Path The path of the file.
.TE
.SH RETURN
An iterator that can be used to get lines from a file one at a time or none if the file couldn't be read.
@@ -31,12 +31,14 @@ An iterator that can be used to get lines from a file one at a time or none if t
.EX
# Safely handle file not being readable:
if lines := (./file.txt).by_line()
-for line in lines
-say(line.upper())
+ for line in lines
+ say(line.upper())
else
-say("Couldn't read file!")
+ say("Couldn't read file!")
# Assume the file is readable and error if that's not the case:
for line in (/dev/stdin).by_line()!
-say(line.upper())
+ say(line.upper())
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.can_execute.3 b/man/man3/tomo-Path.can_execute.3
index 2970f78b..53dee69c 100644
--- a/man/man3/tomo-Path.can_execute.3
+++ b/man/man3/tomo-Path.can_execute.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.can_execute 3 2025-11-09 "Tomo man-pages"
+.TH Path.can_execute 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.can_execute \- check execute permissions
.SH LIBRARY
@@ -19,10 +19,10 @@ Returns whether or not a file can be executed by the current user/group.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-path Path The path of the file to check. -
+lb lb lbx
+l l l.
+Name Type Description
+path Path The path of the file to check.
.TE
.SH RETURN
`yes` if the file or directory exists and the current user has execute permissions, otherwise `no`.
@@ -33,3 +33,5 @@ assert (/bin/sh).can_execute() == yes
assert (/usr/include/stdlib.h).can_execute() == no
assert (/non/existant/file).can_execute() == no
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.can_read.3 b/man/man3/tomo-Path.can_read.3
index 785d3d54..b3c19a89 100644
--- a/man/man3/tomo-Path.can_read.3
+++ b/man/man3/tomo-Path.can_read.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.can_read 3 2025-11-09 "Tomo man-pages"
+.TH Path.can_read 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.can_read \- check read permissions
.SH LIBRARY
@@ -19,10 +19,10 @@ Returns whether or not a file can be read by the current user/group.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-path Path The path of the file to check. -
+lb lb lbx
+l l l.
+Name Type Description
+path Path The path of the file to check.
.TE
.SH RETURN
`yes` if the file or directory exists and the current user has read permissions, otherwise `no`.
@@ -33,3 +33,5 @@ assert (/usr/include/stdlib.h).can_read() == yes
assert (/etc/shadow).can_read() == no
assert (/non/existant/file).can_read() == no
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.can_write.3 b/man/man3/tomo-Path.can_write.3
index 19a3b944..78880c4b 100644
--- a/man/man3/tomo-Path.can_write.3
+++ b/man/man3/tomo-Path.can_write.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.can_write 3 2025-11-09 "Tomo man-pages"
+.TH Path.can_write 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.can_write \- check write permissions
.SH LIBRARY
@@ -19,10 +19,10 @@ Returns whether or not a file can be written by the current user/group.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-path Path The path of the file to check. -
+lb lb lbx
+l l l.
+Name Type Description
+path Path The path of the file to check.
.TE
.SH RETURN
`yes` if the file or directory exists and the current user has write permissions, otherwise `no`.
@@ -33,3 +33,5 @@ assert (/tmp).can_write() == yes
assert (/etc/passwd).can_write() == no
assert (/non/existant/file).can_write() == no
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.changed.3 b/man/man3/tomo-Path.changed.3
index f942bf69..ab32a94f 100644
--- a/man/man3/tomo-Path.changed.3
+++ b/man/man3/tomo-Path.changed.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.changed 3 2025-11-09 "Tomo man-pages"
+.TH Path.changed 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.changed \- get the last changed time
.SH LIBRARY
@@ -36,3 +36,5 @@ This is the ["ctime"](https://en.wikipedia.org/wiki/Stat_(system_call)#ctime) of
assert (./file.txt).changed() == 1704221100
assert (./not-a-file).changed() == none
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.child.3 b/man/man3/tomo-Path.child.3
index 1b4e0497..8e6c4859 100644
--- a/man/man3/tomo-Path.child.3
+++ b/man/man3/tomo-Path.child.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.child 3 2025-11-09 "Tomo man-pages"
+.TH Path.child 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.child \- append a child to a path
.SH LIBRARY
@@ -19,11 +19,11 @@ Return a path that is a child of another path.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-path Path The path of a directory. -
-child Text The name of a child file or directory. -
+lb lb lbx
+l l l.
+Name Type Description
+path Path The path of a directory.
+child Text The name of a child file or directory.
.TE
.SH RETURN
A new path representing the child.
@@ -32,3 +32,5 @@ A new path representing the child.
.EX
assert (./directory).child("file.txt") == (./directory/file.txt)
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.children.3 b/man/man3/tomo-Path.children.3
index 9c83a366..feee88d9 100644
--- a/man/man3/tomo-Path.children.3
+++ b/man/man3/tomo-Path.children.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.children 3 2025-11-09 "Tomo man-pages"
+.TH Path.children 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.children \- get children of a directory
.SH LIBRARY
@@ -23,7 +23,7 @@ lb lb lbx lb
l l l l.
Name Type Description Default
path Path The path of the directory. -
-include_hidden Whether to include hidden files, which start with a `.`. no
+include_hidden Whether to include hidden files, which start with a \fB.\fR. no
.TE
.SH RETURN
A list of paths for the children.
@@ -32,3 +32,5 @@ A list of paths for the children.
.EX
assert (./directory).children(include_hidden=yes) == [".git", "foo.txt"]
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.create_directory.3 b/man/man3/tomo-Path.create_directory.3
index 50e139df..639e3f4a 100644
--- a/man/man3/tomo-Path.create_directory.3
+++ b/man/man3/tomo-Path.create_directory.3
@@ -2,14 +2,14 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.create_directory 3 2025-11-09 "Tomo man-pages"
+.TH Path.create_directory 3 2025-12-07 "Tomo man-pages"
.SH NAME
Path.create_directory \- make a directory
.SH LIBRARY
Tomo Standard Library
.SH SYNOPSIS
.nf
-.BI Path.create_directory\ :\ func(path:\ Path,\ permissions\ =\ Int32(0o755)\ ->\ Void)
+.BI Path.create_directory\ :\ func(path:\ Path,\ permissions\ =\ Int32(0o755),\ recursive\ =\ yes\ ->\ Result)
.fi
.SH DESCRIPTION
Creates a new directory at the specified path with the given permissions. If any of the parent directories do not exist, they will be created as needed.
@@ -24,11 +24,16 @@ l l l l.
Name Type Description Default
path Path The path of the directory to create. -
permissions The permissions to set on the new directory. Int32(0o755)
+recursive If set to \fByes\fR, then recursively create any parent directories if they don't exist, otherwise fail if the parent directory does not exist. When set to \fByes\fR, this function behaves like \fBmkdir -p\fR. yes
.TE
.SH RETURN
-Nothing.
+Either `Success` or `Failure(reason)`.
+
+.SH NOTES
.SH EXAMPLES
.EX
(./new_directory).create_directory()
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.current_dir.3 b/man/man3/tomo-Path.current_dir.3
index ac6eb326..8f9f58c3 100644
--- a/man/man3/tomo-Path.current_dir.3
+++ b/man/man3/tomo-Path.current_dir.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.current_dir 3 2025-11-09 "Tomo man-pages"
+.TH Path.current_dir 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.current_dir \- get current directory
.SH LIBRARY
@@ -22,3 +22,5 @@ The absolute path of the current directory.
.EX
assert Path.current_dir() == (/home/user/tomo)
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.exists.3 b/man/man3/tomo-Path.exists.3
index 7bf91bd8..7d03e468 100644
--- a/man/man3/tomo-Path.exists.3
+++ b/man/man3/tomo-Path.exists.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.exists 3 2025-11-09 "Tomo man-pages"
+.TH Path.exists 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.exists \- check if a path exists
.SH LIBRARY
@@ -19,10 +19,10 @@ Checks if a file or directory exists at the specified path.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-path Path The path to check. -
+lb lb lbx
+l l l.
+Name Type Description
+path Path The path to check.
.TE
.SH RETURN
`True` if the file or directory exists, `False` otherwise.
@@ -31,3 +31,5 @@ path Path The path to check. -
.EX
assert (/).exists() == yes
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.expand_home.3 b/man/man3/tomo-Path.expand_home.3
index c88f25bd..0f3ee0d0 100644
--- a/man/man3/tomo-Path.expand_home.3
+++ b/man/man3/tomo-Path.expand_home.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.expand_home 3 2025-11-09 "Tomo man-pages"
+.TH Path.expand_home 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.expand_home \- expand ~ to $HOME
.SH LIBRARY
@@ -19,10 +19,10 @@ For home-based paths (those starting with `~`), expand the path to replace the t
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-path Path The path to expand. -
+lb lb lbx
+l l l.
+Name Type Description
+path Path The path to expand.
.TE
.SH RETURN
If the path does not start with a `~`, then return it unmodified. Otherwise, replace the `~` with an absolute path to the user's home directory.
@@ -34,3 +34,5 @@ assert (~/foo).expand_home() == (/home/user/foo)
# No change
assert (/foo).expand_home() == (/foo)
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.extension.3 b/man/man3/tomo-Path.extension.3
index 0185400a..71b65f77 100644
--- a/man/man3/tomo-Path.extension.3
+++ b/man/man3/tomo-Path.extension.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.extension 3 2025-11-09 "Tomo man-pages"
+.TH Path.extension 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.extension \- get file extension
.SH LIBRARY
@@ -23,7 +23,7 @@ lb lb lbx lb
l l l l.
Name Type Description Default
path Path The path of the file. -
-full Bool Whether to return everything after the first `.` in the base name, or only the last part of the extension. yes
+full Bool Whether to return everything after the first \fB.\fR in the base name, or only the last part of the extension. yes
.TE
.SH RETURN
The file extension (not including the leading `.`) or an empty text if there is no file extension.
@@ -35,3 +35,5 @@ assert (./file.tar.gz).extension(full=no) == "gz"
assert (/foo).extension() == ""
assert (./.git).extension() == ""
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.files.3 b/man/man3/tomo-Path.files.3
index 32c180fa..cf72a388 100644
--- a/man/man3/tomo-Path.files.3
+++ b/man/man3/tomo-Path.files.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.files 3 2025-11-09 "Tomo man-pages"
+.TH Path.files 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.files \- list files in a directory
.SH LIBRARY
@@ -32,3 +32,5 @@ A list of file paths.
.EX
assert (./directory).files(include_hidden=yes) == [(./directory/file1.txt), (./directory/file2.txt)]
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.from_components.3 b/man/man3/tomo-Path.from_components.3
index eea6d2db..d20efdd2 100644
--- a/man/man3/tomo-Path.from_components.3
+++ b/man/man3/tomo-Path.from_components.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.from_components 3 2025-11-09 "Tomo man-pages"
+.TH Path.from_components 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.from_components \- build a path from components
.SH LIBRARY
@@ -19,10 +19,10 @@ Returns a path built from a list of path components.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-components [Text] A list of path components. -
+lb lb lbx
+l l l.
+Name Type Description
+components [Text] A list of path components.
.TE
.SH RETURN
A path representing the given components.
@@ -33,3 +33,5 @@ assert Path.from_components(["/", "usr", "include"]) == (/usr/include)
assert Path.from_components(["foo.txt"]) == (./foo.txt)
assert Path.from_components(["~", ".local"]) == (~/.local)
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.glob.3 b/man/man3/tomo-Path.glob.3
index d5feeef7..1e593035 100644
--- a/man/man3/tomo-Path.glob.3
+++ b/man/man3/tomo-Path.glob.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.glob 3 2025-11-09 "Tomo man-pages"
+.TH Path.glob 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.glob \- perform file globbing
.SH LIBRARY
@@ -25,10 +25,10 @@ Perform a globbing operation and return a list of matching paths. Some glob spec
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-path Path The path of the directory which may contain special globbing characters like `*`, `?`, or `{...}` -
+lb lb lbx
+l l l.
+Name Type Description
+path Path The path of the directory which may contain special globbing characters like \fB*\fR, \fB?\fR, or \fB{...}\fR
.TE
.SH RETURN
A list of file paths that match the glob.
@@ -44,3 +44,5 @@ assert (./.*).glob() == [(./.hidden)]
# Globs with no matches return an empty list:
assert (./*.xxx).glob() == []
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.group.3 b/man/man3/tomo-Path.group.3
index 4c746746..c7ebdb27 100644
--- a/man/man3/tomo-Path.group.3
+++ b/man/man3/tomo-Path.group.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.group 3 2025-11-09 "Tomo man-pages"
+.TH Path.group 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.group \- get the owning group
.SH LIBRARY
@@ -33,3 +33,5 @@ The name of the group which owns the file or directory, or `none` if the path do
assert (/bin).group() == "root"
assert (/non/existent/file).group() == none
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.has_extension.3 b/man/man3/tomo-Path.has_extension.3
index 7fca6987..390015da 100644
--- a/man/man3/tomo-Path.has_extension.3
+++ b/man/man3/tomo-Path.has_extension.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.has_extension 3 2025-11-09 "Tomo man-pages"
+.TH Path.has_extension 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.has_extension \- check if a path has a given extension
.SH LIBRARY
@@ -19,11 +19,11 @@ Return whether or not a path has a given file extension.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-path Path A path. -
-extension Text A file extension (leading `.` is optional). If empty, the check will test if the file does not have any file extension. -
+lb lb lbx
+l l l.
+Name Type Description
+path Path A path.
+extension Text A file extension (leading \fB.\fR is optional). If empty, the check will test if the file does not have any file extension.
.TE
.SH RETURN
Whether or not the path has the given extension.
@@ -35,3 +35,5 @@ assert (/foo.txt).has_extension(".txt") == yes
assert (/foo.tar.gz).has_extension("gz") == yes
assert (/foo.tar.gz).has_extension("zip") == no
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.is_directory.3 b/man/man3/tomo-Path.is_directory.3
index 089cf3b8..81391108 100644
--- a/man/man3/tomo-Path.is_directory.3
+++ b/man/man3/tomo-Path.is_directory.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.is_directory 3 2025-11-09 "Tomo man-pages"
+.TH Path.is_directory 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.is_directory \- check if a path is a directory
.SH LIBRARY
@@ -33,3 +33,5 @@ follow_symlinks Whether to follow symbolic links. yes
assert (./directory/).is_directory() == yes
assert (./file.txt).is_directory() == no
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.is_file.3 b/man/man3/tomo-Path.is_file.3
index be425328..7d7be65b 100644
--- a/man/man3/tomo-Path.is_file.3
+++ b/man/man3/tomo-Path.is_file.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.is_file 3 2025-11-09 "Tomo man-pages"
+.TH Path.is_file 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.is_file \- check if a path is a file
.SH LIBRARY
@@ -33,3 +33,5 @@ follow_symlinks Whether to follow symbolic links. yes
assert (./file.txt).is_file() == yes
assert (./directory/).is_file() == no
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.is_socket.3 b/man/man3/tomo-Path.is_socket.3
index d371d1d9..1da3bdce 100644
--- a/man/man3/tomo-Path.is_socket.3
+++ b/man/man3/tomo-Path.is_socket.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.is_socket 3 2025-11-09 "Tomo man-pages"
+.TH Path.is_socket 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.is_socket \- check if a path is a socket
.SH LIBRARY
@@ -32,3 +32,5 @@ follow_symlinks Whether to follow symbolic links. yes
.EX
assert (./socket).is_socket() == yes
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.is_symlink.3 b/man/man3/tomo-Path.is_symlink.3
index 1f54231c..d38591d0 100644
--- a/man/man3/tomo-Path.is_symlink.3
+++ b/man/man3/tomo-Path.is_symlink.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.is_symlink 3 2025-11-09 "Tomo man-pages"
+.TH Path.is_symlink 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.is_symlink \- check if a path is a symbolic link
.SH LIBRARY
@@ -19,10 +19,10 @@ Checks if the path represents a symbolic link.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-path Path The path to check. -
+lb lb lbx
+l l l.
+Name Type Description
+path Path The path to check.
.TE
.SH RETURN
`True` if the path is a symbolic link, `False` otherwise.
@@ -31,3 +31,5 @@ path Path The path to check. -
.EX
assert (./link).is_symlink() == yes
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.lines.3 b/man/man3/tomo-Path.lines.3
new file mode 100644
index 00000000..19e48a99
--- /dev/null
+++ b/man/man3/tomo-Path.lines.3
@@ -0,0 +1,35 @@
+'\" t
+.\" Copyright (c) 2025 Bruce Hill
+.\" All rights reserved.
+.\"
+.TH Path.lines 3 2025-11-29 "Tomo man-pages"
+.SH NAME
+Path.lines \- return the lines in a file
+.SH LIBRARY
+Tomo Standard Library
+.SH SYNOPSIS
+.nf
+.BI Path.lines\ :\ func(path:\ Path\ ->\ [Text]?)
+.fi
+.SH DESCRIPTION
+Returns a list with the lines of text in a file or returns none if the file could not be opened.
+
+
+.SH ARGUMENTS
+
+.TS
+allbox;
+lb lb lbx
+l l l.
+Name Type Description
+path Path The path of the file.
+.TE
+.SH RETURN
+A list of the lines in a file or none if the file couldn't be read.
+
+.SH EXAMPLES
+.EX
+lines := (./file.txt).lines()!
+.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.modified.3 b/man/man3/tomo-Path.modified.3
index fd47e9fe..a5780e9f 100644
--- a/man/man3/tomo-Path.modified.3
+++ b/man/man3/tomo-Path.modified.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.modified 3 2025-11-09 "Tomo man-pages"
+.TH Path.modified 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.modified \- get file modification time
.SH LIBRARY
@@ -33,3 +33,5 @@ A 64-bit unix epoch timestamp representing when the file or directory was last m
assert (./file.txt).modified() == 1704221100
assert (./not-a-file).modified() == none
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.owner.3 b/man/man3/tomo-Path.owner.3
index f3a086e2..95bcd089 100644
--- a/man/man3/tomo-Path.owner.3
+++ b/man/man3/tomo-Path.owner.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.owner 3 2025-11-09 "Tomo man-pages"
+.TH Path.owner 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.owner \- get file owner
.SH LIBRARY
@@ -33,3 +33,5 @@ The name of the user who owns the file or directory, or `none` if the path does
assert (/bin).owner() == "root"
assert (/non/existent/file).owner() == none
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.parent.3 b/man/man3/tomo-Path.parent.3
index 1e81ab7c..57c4a4a5 100644
--- a/man/man3/tomo-Path.parent.3
+++ b/man/man3/tomo-Path.parent.3
@@ -2,14 +2,14 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.parent 3 2025-11-09 "Tomo man-pages"
+.TH Path.parent 3 2025-12-07 "Tomo man-pages"
.SH NAME
Path.parent \- get parent directory
.SH LIBRARY
Tomo Standard Library
.SH SYNOPSIS
.nf
-.BI Path.parent\ :\ func(path:\ Path\ ->\ Path)
+.BI Path.parent\ :\ func(path:\ Path\ ->\ Path?)
.fi
.SH DESCRIPTION
Returns the parent directory of the file or directory at the specified path.
@@ -19,15 +19,17 @@ Returns the parent directory of the file or directory at the specified path.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-path Path The path of the file or directory. -
+lb lb lbx
+l l l.
+Name Type Description
+path Path The path of the file or directory.
.TE
.SH RETURN
-The path of the parent directory.
+The path of the parent directory or `none` if the path is `(/)` (the file root).
.SH EXAMPLES
.EX
assert (./path/to/file.txt).parent() == (./path/to/)
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.read.3 b/man/man3/tomo-Path.read.3
index 88ad9e80..31b32fd2 100644
--- a/man/man3/tomo-Path.read.3
+++ b/man/man3/tomo-Path.read.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.read 3 2025-11-09 "Tomo man-pages"
+.TH Path.read 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.read \- read file contents
.SH LIBRARY
@@ -19,10 +19,10 @@ Reads the contents of the file at the specified path or none if the file could n
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-path Path The path of the file to read. -
+lb lb lbx
+l l l.
+Name Type Description
+path Path The path of the file to read.
.TE
.SH RETURN
The contents of the file. If the file could not be read, none will be returned. If the file can be read, but is not valid UTF8 data, an error will be raised.
@@ -32,3 +32,5 @@ The contents of the file. If the file could not be read, none will be returned.
assert (./hello.txt).read() == "Hello"
assert (./nosuchfile.xxx).read() == none
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.read_bytes.3 b/man/man3/tomo-Path.read_bytes.3
index 0c7d82da..11c0310e 100644
--- a/man/man3/tomo-Path.read_bytes.3
+++ b/man/man3/tomo-Path.read_bytes.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.read_bytes 3 2025-11-09 "Tomo man-pages"
+.TH Path.read_bytes 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.read_bytes \- read file contents as bytes
.SH LIBRARY
@@ -33,3 +33,5 @@ The byte contents of the file. If the file cannot be read, none will be returned
assert (./hello.txt).read() == [72, 101, 108, 108, 111]
assert (./nosuchfile.xxx).read() == none
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.relative_to.3 b/man/man3/tomo-Path.relative_to.3
index e528205a..d7f547fb 100644
--- a/man/man3/tomo-Path.relative_to.3
+++ b/man/man3/tomo-Path.relative_to.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.relative_to 3 2025-11-09 "Tomo man-pages"
+.TH Path.relative_to 3 2025-12-07 "Tomo man-pages"
.SH NAME
Path.relative_to \- apply a relative path to another
.SH LIBRARY
@@ -26,9 +26,12 @@ path Path The path to convert. -
relative_to The base path for the relative path. (./)
.TE
.SH RETURN
-The relative path.
+A relative path from the reference point to the given path.
.SH EXAMPLES
.EX
-assert (./path/to/file.txt).relative(relative_to=(./path)) == (./to/file.txt)
+assert (./path/to/file.txt).relative_to((./path)) == (./to/file.txt)
+assert (/tmp/foo).relative_to((/tmp)) == (./foo)
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.remove.3 b/man/man3/tomo-Path.remove.3
index da3179b4..70ef4a56 100644
--- a/man/man3/tomo-Path.remove.3
+++ b/man/man3/tomo-Path.remove.3
@@ -2,14 +2,14 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.remove 3 2025-11-09 "Tomo man-pages"
+.TH Path.remove 3 2025-12-07 "Tomo man-pages"
.SH NAME
Path.remove \- remove a file or directory
.SH LIBRARY
Tomo Standard Library
.SH SYNOPSIS
.nf
-.BI Path.remove\ :\ func(path:\ Path,\ ignore_missing\ =\ no\ ->\ Void)
+.BI Path.remove\ :\ func(path:\ Path,\ ignore_missing\ =\ no\ ->\ Result)
.fi
.SH DESCRIPTION
Removes the file or directory at the specified path. A runtime error is raised if something goes wrong.
@@ -26,9 +26,11 @@ path Path The path to remove. -
ignore_missing Whether to ignore errors if the file or directory does not exist. no
.TE
.SH RETURN
-Nothing.
+Either `Success` or `Failure(reason)`.
.SH EXAMPLES
.EX
(./file.txt).remove()
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.resolved.3 b/man/man3/tomo-Path.resolved.3
index efc76e28..1b22ec08 100644
--- a/man/man3/tomo-Path.resolved.3
+++ b/man/man3/tomo-Path.resolved.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.resolved 3 2025-11-09 "Tomo man-pages"
+.TH Path.resolved 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.resolved \- resolve a path
.SH LIBRARY
@@ -33,3 +33,5 @@ The resolved absolute path.
assert (~/foo).resolved() == (/home/user/foo)
assert (./path/to/file.txt).resolved(relative_to=(/foo)) == (/foo/path/to/file.txt)
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.set_owner.3 b/man/man3/tomo-Path.set_owner.3
index 48a256d5..1cba764a 100644
--- a/man/man3/tomo-Path.set_owner.3
+++ b/man/man3/tomo-Path.set_owner.3
@@ -2,14 +2,14 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.set_owner 3 2025-11-09 "Tomo man-pages"
+.TH Path.set_owner 3 2025-12-07 "Tomo man-pages"
.SH NAME
Path.set_owner \- set the owner
.SH LIBRARY
Tomo Standard Library
.SH SYNOPSIS
.nf
-.BI Path.set_owner\ :\ func(path:\ Path,\ owner:\ Text?\ =\ none,\ group:\ Text?\ =\ none,\ follow_symlinks:\ Bool\ =\ yes\ ->\ Void)
+.BI Path.set_owner\ :\ func(path:\ Path,\ owner:\ Text?\ =\ none,\ group:\ Text?\ =\ none,\ follow_symlinks:\ Bool\ =\ yes\ ->\ Result)
.fi
.SH DESCRIPTION
Set the owning user and/or group for a path.
@@ -28,9 +28,11 @@ group Text? If non-none, the new group to assign to be the owner of the file. n
follow_symlinks Bool Whether to follow symbolic links. yes
.TE
.SH RETURN
-Nothing. If a path does not exist, a failure will be raised.
+Either `Success` or `Failure(reason)`.
.SH EXAMPLES
.EX
(./file.txt).set_owner(owner="root", group="wheel")
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.sibling.3 b/man/man3/tomo-Path.sibling.3
index 324f8f4d..10bc821c 100644
--- a/man/man3/tomo-Path.sibling.3
+++ b/man/man3/tomo-Path.sibling.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.sibling 3 2025-11-09 "Tomo man-pages"
+.TH Path.sibling 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.sibling \- get another path in the same directory
.SH LIBRARY
@@ -19,11 +19,11 @@ Return a path that is a sibling of another path (i.e. has the same parent, but a
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-path Path A path. -
-name Text The name of a sibling file or directory. -
+lb lb lbx
+l l l.
+Name Type Description
+path Path A path.
+name Text The name of a sibling file or directory.
.TE
.SH RETURN
A new path representing the sibling.
@@ -32,3 +32,5 @@ A new path representing the sibling.
.EX
assert (/foo/baz).sibling("doop") == (/foo/doop)
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.subdirectories.3 b/man/man3/tomo-Path.subdirectories.3
index f54f9a11..f2bb371b 100644
--- a/man/man3/tomo-Path.subdirectories.3
+++ b/man/man3/tomo-Path.subdirectories.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.subdirectories 3 2025-11-09 "Tomo man-pages"
+.TH Path.subdirectories 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.subdirectories \- get subdirectories
.SH LIBRARY
@@ -33,3 +33,5 @@ A list of subdirectory paths.
assert (./directory).subdirectories() == [(./directory/subdir1), (./directory/subdir2)]
assert (./directory).subdirectories(include_hidden=yes) == [(./directory/.git), (./directory/subdir1), (./directory/subdir2)]
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.unique_directory.3 b/man/man3/tomo-Path.unique_directory.3
index 0a1c8fe9..7f66fad5 100644
--- a/man/man3/tomo-Path.unique_directory.3
+++ b/man/man3/tomo-Path.unique_directory.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.unique_directory 3 2025-11-09 "Tomo man-pages"
+.TH Path.unique_directory 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.unique_directory \- create a directory with a unique name
.SH LIBRARY
@@ -19,10 +19,10 @@ Generates a unique directory path based on the given path. Useful for creating t
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-path Path The base path for generating the unique directory. The last six letters of this path must be `XXXXXX`. -
+lb lb lbx
+l l l.
+Name Type Description
+path Path The base path for generating the unique directory. The last six letters of this path must be \fBXXXXXX\fR.
.TE
.SH RETURN
A unique directory path after creating the directory.
@@ -33,3 +33,5 @@ assert created := (/tmp/my-dir.XXXXXX).unique_directory() == (/tmp/my-dir-AwoxbM
assert created.is_directory() == yes
created.remove()
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.write.3 b/man/man3/tomo-Path.write.3
index ab0aef36..565935c5 100644
--- a/man/man3/tomo-Path.write.3
+++ b/man/man3/tomo-Path.write.3
@@ -2,14 +2,14 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.write 3 2025-11-09 "Tomo man-pages"
+.TH Path.write 3 2025-12-07 "Tomo man-pages"
.SH NAME
Path.write \- write to a file
.SH LIBRARY
Tomo Standard Library
.SH SYNOPSIS
.nf
-.BI Path.write\ :\ func(path:\ Path,\ text:\ Text,\ permissions\ =\ Int32(0o644)\ ->\ Void)
+.BI Path.write\ :\ func(path:\ Path,\ text:\ Text,\ permissions\ =\ Int32(0o644)\ ->\ Result)
.fi
.SH DESCRIPTION
Writes the given text to the file at the specified path, creating the file if it doesn't already exist. Sets the file permissions as specified. If the file writing cannot be successfully completed, a runtime error is raised.
@@ -27,9 +27,11 @@ text Text The text to write to the file. -
permissions The permissions to set on the file if it is created. Int32(0o644)
.TE
.SH RETURN
-Nothing.
+Either `Success` or `Failure(reason)`.
.SH EXAMPLES
.EX
(./file.txt).write("Hello, world!")
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.write_bytes.3 b/man/man3/tomo-Path.write_bytes.3
index b3ea648b..c11e97ed 100644
--- a/man/man3/tomo-Path.write_bytes.3
+++ b/man/man3/tomo-Path.write_bytes.3
@@ -2,14 +2,14 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.write_bytes 3 2025-11-09 "Tomo man-pages"
+.TH Path.write_bytes 3 2025-12-07 "Tomo man-pages"
.SH NAME
Path.write_bytes \- write bytes to a file
.SH LIBRARY
Tomo Standard Library
.SH SYNOPSIS
.nf
-.BI Path.write_bytes\ :\ func(path:\ Path,\ bytes:\ [Byte],\ permissions\ =\ Int32(0o644)\ ->\ Void)
+.BI Path.write_bytes\ :\ func(path:\ Path,\ bytes:\ [Byte],\ permissions\ =\ Int32(0o644)\ ->\ Result)
.fi
.SH DESCRIPTION
Writes the given bytes to the file at the specified path, creating the file if it doesn't already exist. Sets the file permissions as specified. If the file writing cannot be successfully completed, a runtime error is raised.
@@ -27,9 +27,11 @@ bytes [Byte] A list of bytes to write to the file. -
permissions The permissions to set on the file if it is created. Int32(0o644)
.TE
.SH RETURN
-Nothing.
+Either `Success` or `Failure(reason)`.
.SH EXAMPLES
.EX
(./file.txt).write_bytes([104, 105])
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.write_unique.3 b/man/man3/tomo-Path.write_unique.3
index 400f4097..d7763bdb 100644
--- a/man/man3/tomo-Path.write_unique.3
+++ b/man/man3/tomo-Path.write_unique.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.write_unique 3 2025-11-09 "Tomo man-pages"
+.TH Path.write_unique 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.write_unique \- write to a uniquely named file
.SH LIBRARY
@@ -19,11 +19,11 @@ Writes the given text to a unique file path based on the specified path. The fil
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-path Path The base path for generating the unique file. This path must include the string `XXXXXX` in the file base name. -
-text Text The text to write to the file. -
+lb lb lbx
+l l l.
+Name Type Description
+path Path The base path for generating the unique file. This path must include the string \fBXXXXXX\fR in the file base name.
+text Text The text to write to the file.
.TE
.SH RETURN
The path of the newly created unique file.
@@ -35,3 +35,5 @@ assert created == (./file-27QHtq.txt)
assert created.read() == "Hello, world!"
created.remove()
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Path.write_unique_bytes.3 b/man/man3/tomo-Path.write_unique_bytes.3
index 53cb7bfd..6bb4abd0 100644
--- a/man/man3/tomo-Path.write_unique_bytes.3
+++ b/man/man3/tomo-Path.write_unique_bytes.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Path.write_unique_bytes 3 2025-11-09 "Tomo man-pages"
+.TH Path.write_unique_bytes 3 2025-11-29 "Tomo man-pages"
.SH NAME
Path.write_unique_bytes \- write bytes to a uniquely named file
.SH LIBRARY
@@ -19,11 +19,11 @@ Writes the given bytes to a unique file path based on the specified path. The fi
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-path Path The base path for generating the unique file. This path must include the string `XXXXXX` in the file base name. -
-bytes [Byte] The bytes to write to the file. -
+lb lb lbx
+l l l.
+Name Type Description
+path Path The base path for generating the unique file. This path must include the string \fBXXXXXX\fR in the file base name.
+bytes [Byte] The bytes to write to the file.
.TE
.SH RETURN
The path of the newly created unique file.
@@ -35,3 +35,5 @@ assert created == (./file-27QHtq.txt)
assert created.read() == [1, 2, 3]
created.remove()
.EE
+.SH SEE ALSO
+.BR Tomo-Path (3)
diff --git a/man/man3/tomo-Table.3 b/man/man3/tomo-Table.3
new file mode 100644
index 00000000..f12f5b18
--- /dev/null
+++ b/man/man3/tomo-Table.3
@@ -0,0 +1,99 @@
+'\" t
+.\" Copyright (c) 2025 Bruce Hill
+.\" All rights reserved.
+.\"
+.TH Table 3 2025-11-29 "Tomo man-pages"
+.SH NAME
+Table \- a Tomo type
+.SH LIBRARY
+Tomo Standard Library
+.fi
+.SH METHODS
+
+.TP
+.BI Table.clear\ :\ func(t:\ &{K:V}\ ->\ Void)
+Removes all key-value pairs from the table.
+
+For more, see:
+.BR Tomo-Table.clear (3)
+
+
+.TP
+.BI Table.difference\ :\ func(t:\ {K:V},\ other:\ {K:V}\ ->\ {K:V})
+Return a table whose key/value pairs correspond to keys only present in one table, but not the other.
+
+For more, see:
+.BR Tomo-Table.difference (3)
+
+
+.TP
+.BI Table.get\ :\ func(t:\ {K:V},\ key:\ K\ ->\ V?)
+Retrieves the value associated with a key, or returns \fBnone\fR if the key is not present.
+
+For more, see:
+.BR Tomo-Table.get (3)
+
+
+.TP
+.BI Table.get_or_set\ :\ func(t:\ &{K:V},\ key:\ K,\ default:\ V\ ->\ V?)
+If the given key is in the table, return the associated value. Otherwise, insert the given default value into the table and return it.
+
+For more, see:
+.BR Tomo-Table.get_or_set (3)
+
+
+.TP
+.BI Table.has\ :\ func(t:\ {K:V},\ key:\ K\ ->\ Bool)
+Checks if the table contains a specified key.
+
+For more, see:
+.BR Tomo-Table.has (3)
+
+
+.TP
+.BI Table.intersection\ :\ func(t:\ {K:V},\ other:\ {K:V}\ ->\ {K:V})
+Return a table with only the matching key/value pairs that are common to both tables.
+
+For more, see:
+.BR Tomo-Table.intersection (3)
+
+
+.TP
+.BI Table.remove\ :\ func(t:\ {K:V},\ key:\ K\ ->\ Void)
+Removes the key-value pair associated with a specified key.
+
+For more, see:
+.BR Tomo-Table.remove (3)
+
+
+.TP
+.BI Table.set\ :\ func(t:\ {K:V},\ key:\ K,\ value:\ V\ ->\ Void)
+Sets or updates the value associated with a specified key.
+
+For more, see:
+.BR Tomo-Table.set (3)
+
+
+.TP
+.BI Table.with\ :\ func(t:\ {K:V},\ other:\ {K:V}\ ->\ {K:V})
+Return a copy of a table with values added from another table
+
+For more, see:
+.BR Tomo-Table.with (3)
+
+
+.TP
+.BI Table.with_fallback\ :\ func(t:\ {K:V},\ fallback:\ {K:V}?\ ->\ {K:V})
+Return a copy of a table with a different fallback table.
+
+For more, see:
+.BR Tomo-Table.with_fallback (3)
+
+
+.TP
+.BI Table.without\ :\ func(t:\ {K:V},\ other:\ {K:V}\ ->\ {K:V})
+Return a copy of a table, but without any of the exact key/value pairs found in the other table.
+
+For more, see:
+.BR Tomo-Table.without (3)
+
diff --git a/man/man3/tomo-Table.clear.3 b/man/man3/tomo-Table.clear.3
index be91c5ce..1e2816dd 100644
--- a/man/man3/tomo-Table.clear.3
+++ b/man/man3/tomo-Table.clear.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Table.clear 3 2025-11-09 "Tomo man-pages"
+.TH Table.clear 3 2025-11-29 "Tomo man-pages"
.SH NAME
Table.clear \- clear a table
.SH LIBRARY
@@ -19,10 +19,10 @@ Removes all key-value pairs from the table.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-t &{K:V} The reference to the table. -
+lb lb lbx
+l l l.
+Name Type Description
+t &{K:V} The reference to the table.
.TE
.SH RETURN
Nothing.
@@ -33,3 +33,5 @@ t := &{"A":1}
t.clear()
assert t == {}
.EE
+.SH SEE ALSO
+.BR Tomo-Table (3)
diff --git a/man/man3/tomo-Table.difference.3 b/man/man3/tomo-Table.difference.3
index b216b283..2db0def3 100644
--- a/man/man3/tomo-Table.difference.3
+++ b/man/man3/tomo-Table.difference.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Table.difference 3 2025-11-09 "Tomo man-pages"
+.TH Table.difference 3 2025-11-29 "Tomo man-pages"
.SH NAME
Table.difference \- return a table using keys not present in both tables
.SH LIBRARY
@@ -19,11 +19,11 @@ Return a table whose key/value pairs correspond to keys only present in one tabl
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-t {K:V} The base table. -
-other {K:V} The other table. -
+lb lb lbx
+l l l.
+Name Type Description
+t {K:V} The base table.
+other {K:V} The other table.
.TE
.SH RETURN
A table containing the common key/value pairs whose keys only appear in one table.
@@ -34,3 +34,5 @@ t1 := {"A": 1; "B": 2, "C": 3}
t2 := {"B": 2, "C":30, "D": 40}
assert t1.difference(t2) == {"A": 1, "D": 40}
.EE
+.SH SEE ALSO
+.BR Tomo-Table (3)
diff --git a/man/man3/tomo-Table.get.3 b/man/man3/tomo-Table.get.3
index ce0b1f95..87dc40ec 100644
--- a/man/man3/tomo-Table.get.3
+++ b/man/man3/tomo-Table.get.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Table.get 3 2025-11-09 "Tomo man-pages"
+.TH Table.get 3 2025-11-29 "Tomo man-pages"
.SH NAME
Table.get \- get an item from a table
.SH LIBRARY
@@ -19,11 +19,11 @@ Retrieves the value associated with a key, or returns `none` if the key is not p
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-t {K:V} The table. -
-key K The key whose associated value is to be retrieved. -
+lb lb lbx
+l l l.
+Name Type Description
+t {K:V} The table.
+key K The key whose associated value is to be retrieved.
.TE
.SH RETURN
The value associated with the key or `none` if the key is not found.
@@ -39,3 +39,5 @@ assert t.get("????") == none
assert t.get("A")! == 1
assert t.get("????") or 0 == 0
.EE
+.SH SEE ALSO
+.BR Tomo-Table (3)
diff --git a/man/man3/tomo-Table.get_or_set.3 b/man/man3/tomo-Table.get_or_set.3
index 69d5a236..61c84305 100644
--- a/man/man3/tomo-Table.get_or_set.3
+++ b/man/man3/tomo-Table.get_or_set.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Table.get_or_set 3 2025-11-09 "Tomo man-pages"
+.TH Table.get_or_set 3 2025-11-29 "Tomo man-pages"
.SH NAME
Table.get_or_set \- get an item or set a default if absent
.SH LIBRARY
@@ -19,12 +19,12 @@ If the given key is in the table, return the associated value. Otherwise, insert
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-t &{K:V} The table. -
-key K The key whose associated value is to be retrieved. -
-default V The default value to insert and return if the key is not present in the table. -
+lb lb lbx
+l l l.
+Name Type Description
+t &{K:V} The table.
+key K The key whose associated value is to be retrieved.
+default V The default value to insert and return if the key is not present in the table.
.TE
.SH RETURN
Either the value associated with the key (if present) or the default value. The table will be mutated if the key is not already present.
@@ -43,3 +43,5 @@ assert t == &{"A": @[1, 2, 3, 4], "B": @[99]}
assert t.get_or_set("C", @[0, 0, 0]) == @[0, 0, 0]
assert t == &{"A": @[1, 2, 3, 4], "B": @[99], "C": @[0, 0, 0]}
.EE
+.SH SEE ALSO
+.BR Tomo-Table (3)
diff --git a/man/man3/tomo-Table.has.3 b/man/man3/tomo-Table.has.3
index c4b4a09b..45936f89 100644
--- a/man/man3/tomo-Table.has.3
+++ b/man/man3/tomo-Table.has.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Table.has 3 2025-11-09 "Tomo man-pages"
+.TH Table.has 3 2025-11-29 "Tomo man-pages"
.SH NAME
Table.has \- check for a key
.SH LIBRARY
@@ -19,11 +19,11 @@ Checks if the table contains a specified key.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-t {K:V} The table. -
-key K The key to check for presence. -
+lb lb lbx
+l l l.
+Name Type Description
+t {K:V} The table.
+key K The key to check for presence.
.TE
.SH RETURN
`yes` if the key is present, `no` otherwise.
@@ -33,3 +33,5 @@ key K The key to check for presence. -
assert {"A": 1, "B": 2}.has("A") == yes
assert {"A": 1, "B": 2}.has("xxx") == no
.EE
+.SH SEE ALSO
+.BR Tomo-Table (3)
diff --git a/man/man3/tomo-Table.intersection.3 b/man/man3/tomo-Table.intersection.3
index c01f4336..bbd8497d 100644
--- a/man/man3/tomo-Table.intersection.3
+++ b/man/man3/tomo-Table.intersection.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Table.intersection 3 2025-11-09 "Tomo man-pages"
+.TH Table.intersection 3 2025-11-29 "Tomo man-pages"
.SH NAME
Table.intersection \- return a table with common key/value pairs from two tables
.SH LIBRARY
@@ -19,11 +19,11 @@ Return a table with only the matching key/value pairs that are common to both ta
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-t {K:V} The base table. -
-other {K:V} The other table. -
+lb lb lbx
+l l l.
+Name Type Description
+t {K:V} The base table.
+other {K:V} The other table.
.TE
.SH RETURN
A table containing the common key/value pairs shared between two tables.
@@ -34,3 +34,5 @@ t1 := {"A": 1; "B": 2, "C": 3}
t2 := {"B": 2, "C":30, "D": 40}
assert t1.intersection(t2) == {"B": 2}
.EE
+.SH SEE ALSO
+.BR Tomo-Table (3)
diff --git a/man/man3/tomo-Table.remove.3 b/man/man3/tomo-Table.remove.3
index 07fd042d..5f5b06b7 100644
--- a/man/man3/tomo-Table.remove.3
+++ b/man/man3/tomo-Table.remove.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Table.remove 3 2025-11-09 "Tomo man-pages"
+.TH Table.remove 3 2025-11-29 "Tomo man-pages"
.SH NAME
Table.remove \- remove a table entry
.SH LIBRARY
@@ -19,11 +19,11 @@ Removes the key-value pair associated with a specified key.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-t {K:V} The reference to the table. -
-key K The key of the key-value pair to remove. -
+lb lb lbx
+l l l.
+Name Type Description
+t {K:V} The reference to the table.
+key K The key of the key-value pair to remove.
.TE
.SH RETURN
Nothing.
@@ -34,3 +34,5 @@ t := {"A": 1, "B": 2}
t.remove("A")
assert t == {"B": 2}
.EE
+.SH SEE ALSO
+.BR Tomo-Table (3)
diff --git a/man/man3/tomo-Table.set.3 b/man/man3/tomo-Table.set.3
index bf8c39cd..ba904c29 100644
--- a/man/man3/tomo-Table.set.3
+++ b/man/man3/tomo-Table.set.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Table.set 3 2025-11-09 "Tomo man-pages"
+.TH Table.set 3 2025-11-29 "Tomo man-pages"
.SH NAME
Table.set \- set a table entry
.SH LIBRARY
@@ -19,12 +19,12 @@ Sets or updates the value associated with a specified key.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-t {K:V} The reference to the table. -
-key K The key to set or update. -
-value V The value to associate with the key. -
+lb lb lbx
+l l l.
+Name Type Description
+t {K:V} The reference to the table.
+key K The key to set or update.
+value V The value to associate with the key.
.TE
.SH RETURN
Nothing.
@@ -35,3 +35,5 @@ t := {"A": 1, "B": 2}
t.set("C", 3)
assert t == {"A": 1, "B": 2, "C": 3}
.EE
+.SH SEE ALSO
+.BR Tomo-Table (3)
diff --git a/man/man3/tomo-Table.with.3 b/man/man3/tomo-Table.with.3
index d9a70f97..c2285343 100644
--- a/man/man3/tomo-Table.with.3
+++ b/man/man3/tomo-Table.with.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Table.with 3 2025-11-09 "Tomo man-pages"
+.TH Table.with 3 2025-11-29 "Tomo man-pages"
.SH NAME
Table.with \- return a table with values added from another table
.SH LIBRARY
@@ -19,11 +19,11 @@ Return a copy of a table with values added from another table
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-t {K:V} The base table. -
-other {K:V} The other table from which new key/value pairs will be added. -
+lb lb lbx
+l l l.
+Name Type Description
+t {K:V} The base table.
+other {K:V} The other table from which new key/value pairs will be added.
.TE
.SH RETURN
The original table, but with values from the other table added.
@@ -33,3 +33,5 @@ The original table, but with values from the other table added.
t := {"A": 1; "B": 2}
assert t.with({"B": 20, "C": 30}) == {"A": 1, "B": 20, "C": 30}
.EE
+.SH SEE ALSO
+.BR Tomo-Table (3)
diff --git a/man/man3/tomo-Table.with_fallback.3 b/man/man3/tomo-Table.with_fallback.3
index ea8f7979..72dd0589 100644
--- a/man/man3/tomo-Table.with_fallback.3
+++ b/man/man3/tomo-Table.with_fallback.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Table.with_fallback 3 2025-11-09 "Tomo man-pages"
+.TH Table.with_fallback 3 2025-11-29 "Tomo man-pages"
.SH NAME
Table.with_fallback \- return a table with a new fallback
.SH LIBRARY
@@ -19,11 +19,11 @@ Return a copy of a table with a different fallback table.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-t {K:V} The table whose fallback will be replaced. -
-fallback {K:V}? The new fallback table value. -
+lb lb lbx
+l l l.
+Name Type Description
+t {K:V} The table whose fallback will be replaced.
+fallback {K:V}? The new fallback table value.
.TE
.SH RETURN
The original table with a different fallback.
@@ -36,3 +36,5 @@ assert t2["B"] == 3
t3 = t.with_fallback(none)
assert t2["B"] == none
.EE
+.SH SEE ALSO
+.BR Tomo-Table (3)
diff --git a/man/man3/tomo-Table.without.3 b/man/man3/tomo-Table.without.3
index c9d1b0e9..80154a3a 100644
--- a/man/man3/tomo-Table.without.3
+++ b/man/man3/tomo-Table.without.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Table.without 3 2025-11-09 "Tomo man-pages"
+.TH Table.without 3 2025-11-29 "Tomo man-pages"
.SH NAME
Table.without \- return a table without key/value pairs in another table
.SH LIBRARY
@@ -19,11 +19,11 @@ Return a copy of a table, but without any of the exact key/value pairs found in
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-t {K:V} The base table. -
-other {K:V} The other table whose key/value pairs will be omitted. -
+lb lb lbx
+l l l.
+Name Type Description
+t {K:V} The base table.
+other {K:V} The other table whose key/value pairs will be omitted.
.TE
.SH RETURN
The original table, but without the key/value pairs from the other table.
@@ -36,3 +36,5 @@ Only exact key/value pairs will be discarded. Keys with a non-matching value wil
t := {"A": 1; "B": 2, "C": 3}
assert t.without({"B": 2, "C": 30, "D": 40}) == {"A": 1, "C": 3}
.EE
+.SH SEE ALSO
+.BR Tomo-Table (3)
diff --git a/man/man3/tomo-Text.3 b/man/man3/tomo-Text.3
new file mode 100644
index 00000000..634e3e0a
--- /dev/null
+++ b/man/man3/tomo-Text.3
@@ -0,0 +1,339 @@
+'\" t
+.\" Copyright (c) 2025 Bruce Hill
+.\" All rights reserved.
+.\"
+.TH Text 3 2025-11-29 "Tomo man-pages"
+.SH NAME
+Text \- a Tomo type
+.SH LIBRARY
+Tomo Standard Library
+.fi
+.SH METHODS
+
+.TP
+.BI Text.as_c_string\ :\ func(text:\ Text\ ->\ CString)
+Converts a \fBText\fR value to a C-style string.
+
+For more, see:
+.BR Tomo-Text.as_c_string (3)
+
+
+.TP
+.BI Text.at\ :\ func(text:\ Text,\ index:\ Int\ ->\ Text)
+Get the graphical cluster at a given index. This is similar to \fBstr[i]\fR with ASCII text, but has more correct behavior for unicode text.
+
+For more, see:
+.BR Tomo-Text.at (3)
+
+
+.TP
+.BI Text.by_line\ :\ func(text:\ Text\ ->\ func(->Text?))
+Returns an iterator function that can be used to iterate over the lines in a text.
+
+For more, see:
+.BR Tomo-Text.by_line (3)
+
+
+.TP
+.BI Text.by_split\ :\ func(text:\ Text,\ delimiter:\ Text\ =\ ""\ ->\ func(->Text?))
+Returns an iterator function that can be used to iterate over text separated by a delimiter.
+
+For more, see:
+.BR Tomo-Text.by_split (3)
+
+
+.TP
+.BI Text.by_split_any\ :\ func(text:\ Text,\ delimiters:\ Text\ =\ "\ $\[rs]t\[rs]r\[rs]n"\ ->\ func(->Text?))
+Returns an iterator function that can be used to iterate over text separated by one or more characters (grapheme clusters) from a given text of delimiters.
+
+For more, see:
+.BR Tomo-Text.by_split_any (3)
+
+
+.TP
+.BI Text.caseless_equals\ :\ func(a:\ Text,\ b:\ Text,\ language:\ Text\ =\ "C"\ ->\ Bool)
+Checks whether two texts are equal, ignoring the casing of the letters (i.e. case-insensitive comparison).
+
+For more, see:
+.BR Tomo-Text.caseless_equals (3)
+
+
+.TP
+.BI Text.codepoint_names\ :\ func(text:\ Text\ ->\ [Text])
+Returns a list of the names of each codepoint in the text.
+
+For more, see:
+.BR Tomo-Text.codepoint_names (3)
+
+
+.TP
+.BI Text.ends_with\ :\ func(text:\ Text,\ suffix:\ Text,\ remainder:\ &Text?\ =\ none\ ->\ Bool)
+Checks if the \fBText\fR ends with a literal suffix text.
+
+For more, see:
+.BR Tomo-Text.ends_with (3)
+
+
+.TP
+.BI Text.find\ :\ func(text:\ Text,\ target:\ Text,\ start:\ Int\ =\ 1\ ->\ Int)
+Find a substring within a text and return its index, if found.
+
+For more, see:
+.BR Tomo-Text.find (3)
+
+
+.TP
+.BI Text.from\ :\ func(text:\ Text,\ first:\ Int\ ->\ Text)
+Get a slice of the text, starting at the given position.
+
+For more, see:
+.BR Tomo-Text.from (3)
+
+
+.TP
+.BI Text.from_c_string\ :\ func(str:\ CString\ ->\ Text)
+Converts a C-style string to a \fBText\fR value.
+
+For more, see:
+.BR Tomo-Text.from_c_string (3)
+
+
+.TP
+.BI Text.from_codepoint_names\ :\ func(codepoint_names:\ [Text]\ ->\ [Text])
+Returns text that has the given codepoint names (according to the Unicode specification) as its codepoints.
+
+For more, see:
+.BR Tomo-Text.from_codepoint_names (3)
+
+
+.TP
+.BI Text.from_utf16\ :\ func(bytes:\ [Int16]\ ->\ [Text])
+Returns text that has been constructed from the given UTF16 sequence.
+
+For more, see:
+.BR Tomo-Text.from_utf16 (3)
+
+
+.TP
+.BI Text.from_utf32\ :\ func(codepoints:\ [Int32]\ ->\ [Text])
+Returns text that has been constructed from the given UTF32 codepoints.
+
+For more, see:
+.BR Tomo-Text.from_utf32 (3)
+
+
+.TP
+.BI Text.from_utf8\ :\ func(bytes:\ [Byte]\ ->\ [Text])
+Returns text that has been constructed from the given UTF8 bytes.
+
+For more, see:
+.BR Tomo-Text.from_utf8 (3)
+
+
+.TP
+.BI Text.has\ :\ func(text:\ Text,\ target:\ Text\ ->\ Bool)
+Checks if the \fBText\fR contains some target text.
+
+For more, see:
+.BR Tomo-Text.has (3)
+
+
+.TP
+.BI Text.join\ :\ func(glue:\ Text,\ pieces:\ [Text]\ ->\ Text)
+Joins a list of text pieces with a specified glue.
+
+For more, see:
+.BR Tomo-Text.join (3)
+
+
+.TP
+.BI Text.left_pad\ :\ func(text:\ Text,\ width:\ Int,\ pad:\ Text\ =\ "\ ",\ language:\ Text\ =\ "C"\ ->\ Text)
+Pad some text on the left side so it reaches a target width.
+
+For more, see:
+.BR Tomo-Text.left_pad (3)
+
+
+.TP
+.BI Text.lines\ :\ func(text:\ Text\ ->\ [Text])
+Splits the text into a list of lines of text, preserving blank lines, ignoring trailing newlines, and handling \fB\r\n\fR the same as \fB\n\fR.
+
+For more, see:
+.BR Tomo-Text.lines (3)
+
+
+.TP
+.BI Text.lower\ :\ func(text:\ Text,\ language:\ Text\ =\ "C"\ ->\ Text)
+Converts all characters in the text to lowercase.
+
+For more, see:
+.BR Tomo-Text.lower (3)
+
+
+.TP
+.BI Text.middle_pad\ :\ func(text:\ Text,\ width:\ Int,\ pad:\ Text\ =\ "\ ",\ language:\ Text\ =\ "C"\ ->\ Text)
+Pad some text on the left and right side so it reaches a target width.
+
+For more, see:
+.BR Tomo-Text.middle_pad (3)
+
+
+.TP
+.BI Text.quoted\ :\ func(text:\ Text,\ color:\ Bool\ =\ no,\ quotation_mark:\ Text\ =\ `"`\ ->\ Text)
+Formats the text with quotation marks and escapes.
+
+For more, see:
+.BR Tomo-Text.quoted (3)
+
+
+.TP
+.BI Text.repeat\ :\ func(text:\ Text,\ count:\ Int\ ->\ Text)
+Repeat some text multiple times.
+
+For more, see:
+.BR Tomo-Text.repeat (3)
+
+
+.TP
+.BI Text.replace\ :\ func(text:\ Text,\ target:\ Text,\ replacement:\ Text\ ->\ Text)
+Replaces occurrences of a target text with a replacement text.
+
+For more, see:
+.BR Tomo-Text.replace (3)
+
+
+.TP
+.BI Text.reversed\ :\ func(text:\ Text\ ->\ Text)
+Return a text that has the grapheme clusters in reverse order.
+
+For more, see:
+.BR Tomo-Text.reversed (3)
+
+
+.TP
+.BI Text.right_pad\ :\ func(text:\ Text,\ width:\ Int,\ pad:\ Text\ =\ "\ ",\ language:\ Text\ =\ "C"\ ->\ Text)
+Pad some text on the right side so it reaches a target width.
+
+For more, see:
+.BR Tomo-Text.right_pad (3)
+
+
+.TP
+.BI Text.slice\ :\ func(text:\ Text,\ from:\ Int\ =\ 1,\ to:\ Int\ =\ -1\ ->\ Text)
+Get a slice of the text.
+
+For more, see:
+.BR Tomo-Text.slice (3)
+
+
+.TP
+.BI Text.split\ :\ func(text:\ Text,\ delimiter:\ Text\ =\ ""\ ->\ [Text])
+Splits the text into a list of substrings based on exact matches of a delimiter.
+
+For more, see:
+.BR Tomo-Text.split (3)
+
+
+.TP
+.BI Text.split_any\ :\ func(text:\ Text,\ delimiters:\ Text\ =\ "\ $\[rs]t\[rs]r\[rs]n"\ ->\ [Text])
+Splits the text into a list of substrings at one or more occurrences of a set of delimiter characters (grapheme clusters).
+
+For more, see:
+.BR Tomo-Text.split_any (3)
+
+
+.TP
+.BI Text.starts_with\ :\ func(text:\ Text,\ prefix:\ Text,\ remainder:\ &Text?\ =\ none\ ->\ Bool)
+Checks if the \fBText\fR starts with a literal prefix text.
+
+For more, see:
+.BR Tomo-Text.starts_with (3)
+
+
+.TP
+.BI Text.title\ :\ func(text:\ Text,\ language:\ Text\ =\ "C"\ ->\ Text)
+Converts the text to title case (capitalizing the first letter of each word).
+
+For more, see:
+.BR Tomo-Text.title (3)
+
+
+.TP
+.BI Text.to\ :\ func(text:\ Text,\ last:\ Int\ ->\ Text)
+Get a slice of the text, ending at the given position.
+
+For more, see:
+.BR Tomo-Text.to (3)
+
+
+.TP
+.BI Text.translate\ :\ func(text:\ Text,\ translations:\ {Text:Text}\ ->\ Text)
+Takes a table mapping target texts to their replacements and performs all the replacements in the table on the whole text. At each position, the first matching replacement is applied and the matching moves on to *after* the replacement text, so replacement text is not recursively modified. See Text.replace() for more information about replacement behavior.
+
+For more, see:
+.BR Tomo-Text.translate (3)
+
+
+.TP
+.BI Text.trim\ :\ func(text:\ Text,\ to_trim:\ Text\ =\ "\ $\[rs]t\[rs]r\[rs]n",\ left:\ Bool\ =\ yes,\ right:\ Bool\ =\ yes\ ->\ Text)
+Trims the given characters (grapheme clusters) from the left and/or right side of the text.
+
+For more, see:
+.BR Tomo-Text.trim (3)
+
+
+.TP
+.BI Text.upper\ :\ func(text:\ Text,\ language:\ Text\ =\ "C"\ ->\ Text)
+Converts all characters in the text to uppercase.
+
+For more, see:
+.BR Tomo-Text.upper (3)
+
+
+.TP
+.BI Text.utf16\ :\ func(text:\ Text\ ->\ [Int16])
+Returns a list of Unicode code points for UTF16 encoding of the text.
+
+For more, see:
+.BR Tomo-Text.utf16 (3)
+
+
+.TP
+.BI Text.utf32\ :\ func(text:\ Text\ ->\ [Int32])
+Returns a list of Unicode code points for UTF32 encoding of the text.
+
+For more, see:
+.BR Tomo-Text.utf32 (3)
+
+
+.TP
+.BI Text.utf8\ :\ func(text:\ Text\ ->\ [Byte])
+Converts a \fBText\fR value to a list of bytes representing a UTF8 encoding of the text.
+
+For more, see:
+.BR Tomo-Text.utf8 (3)
+
+
+.TP
+.BI Text.width\ :\ func(text:\ Text\ ->\ Int)
+Returns the display width of the text as seen in a terminal with appropriate font rendering. This is usually the same as the text's \fB.length\fR, but there are some characters like emojis that render wider than 1 cell.
+
+For more, see:
+.BR Tomo-Text.width (3)
+
+
+.TP
+.BI Text.without_prefix\ :\ func(text:\ Text,\ prefix:\ Text\ ->\ Text)
+Returns the text with a given prefix removed (if present).
+
+For more, see:
+.BR Tomo-Text.without_prefix (3)
+
+
+.TP
+.BI Text.without_suffix\ :\ func(text:\ Text,\ suffix:\ Text\ ->\ Text)
+Returns the text with a given suffix removed (if present).
+
+For more, see:
+.BR Tomo-Text.without_suffix (3)
+
diff --git a/man/man3/tomo-Text.as_c_string.3 b/man/man3/tomo-Text.as_c_string.3
index fec6a393..5369905d 100644
--- a/man/man3/tomo-Text.as_c_string.3
+++ b/man/man3/tomo-Text.as_c_string.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.as_c_string 3 2025-11-09 "Tomo man-pages"
+.TH Text.as_c_string 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.as_c_string \- convert to C-style string
.SH LIBRARY
@@ -19,10 +19,10 @@ Converts a `Text` value to a C-style string.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-text Text The text to be converted to a C-style string. -
+lb lb lbx
+l l l.
+Name Type Description
+text Text The text to be converted to a C-style string.
.TE
.SH RETURN
A C-style string (`CString`) representing the text.
@@ -31,3 +31,5 @@ A C-style string (`CString`) representing the text.
.EX
assert "Hello".as_c_string() == CString("Hello")
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.at.3 b/man/man3/tomo-Text.at.3
index 1908f6c0..a1d30371 100644
--- a/man/man3/tomo-Text.at.3
+++ b/man/man3/tomo-Text.at.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.at 3 2025-11-09 "Tomo man-pages"
+.TH Text.at 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.at \- get a letter
.SH LIBRARY
@@ -19,11 +19,11 @@ Get the graphical cluster at a given index. This is similar to `str[i]` with ASC
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-text Text The text from which to get a cluster. -
-index Int The index of the graphical cluster (1-indexed). -
+lb lb lbx
+l l l.
+Name Type Description
+text Text The text from which to get a cluster.
+index Int The index of the graphical cluster (1-indexed).
.TE
.SH RETURN
A `Text` with the single graphical cluster at the given index.
@@ -35,3 +35,5 @@ Negative indices are counted from the back of the text, so `-1` means the last c
.EX
assert "Amélie".at(3) == "é"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.by_line.3 b/man/man3/tomo-Text.by_line.3
index 6f996ed1..2abc4c23 100644
--- a/man/man3/tomo-Text.by_line.3
+++ b/man/man3/tomo-Text.by_line.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.by_line 3 2025-11-09 "Tomo man-pages"
+.TH Text.by_line 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.by_line \- iterate by line
.SH LIBRARY
@@ -19,10 +19,10 @@ Returns an iterator function that can be used to iterate over the lines in a tex
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-text Text The text to be iterated over, line by line. -
+lb lb lbx
+l l l.
+Name Type Description
+text Text The text to be iterated over, line by line.
.TE
.SH RETURN
An iterator function that returns one line at a time, until it runs out and returns `none`.
@@ -40,3 +40,5 @@ for line in text.by_line()
# Prints: "line one" then "line two":
say(line)
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.by_split.3 b/man/man3/tomo-Text.by_split.3
index 188c3592..12f15674 100644
--- a/man/man3/tomo-Text.by_split.3
+++ b/man/man3/tomo-Text.by_split.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.by_split 3 2025-11-09 "Tomo man-pages"
+.TH Text.by_split 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.by_split \- iterate by a spliting text
.SH LIBRARY
@@ -39,3 +39,5 @@ for chunk in text.by_split(",")
# Prints: "one" then "two" then "three":
say(chunk)
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.by_split_any.3 b/man/man3/tomo-Text.by_split_any.3
index dfce89a7..158fed1c 100644
--- a/man/man3/tomo-Text.by_split_any.3
+++ b/man/man3/tomo-Text.by_split_any.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.by_split_any 3 2025-11-09 "Tomo man-pages"
+.TH Text.by_split_any 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.by_split_any \- iterate by one of many splitting characters
.SH LIBRARY
@@ -39,3 +39,5 @@ for chunk in text.by_split_any(",;")
# Prints: "one" then "two" then "three":
say(chunk)
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.caseless_equals.3 b/man/man3/tomo-Text.caseless_equals.3
index 1818851c..d4fdf8de 100644
--- a/man/man3/tomo-Text.caseless_equals.3
+++ b/man/man3/tomo-Text.caseless_equals.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.caseless_equals 3 2025-11-09 "Tomo man-pages"
+.TH Text.caseless_equals 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.caseless_equals \- case-insensitive comparison
.SH LIBRARY
@@ -36,3 +36,5 @@ assert "A".caseless_equals("a") == yes
# Turkish lowercase "I" is "ı" (dotless I), not "i"
assert "I".caseless_equals("i", language="tr_TR") == no
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.codepoint_names.3 b/man/man3/tomo-Text.codepoint_names.3
index 80ac3d6f..320af3f6 100644
--- a/man/man3/tomo-Text.codepoint_names.3
+++ b/man/man3/tomo-Text.codepoint_names.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.codepoint_names 3 2025-11-09 "Tomo man-pages"
+.TH Text.codepoint_names 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.codepoint_names \- get unicode codepoint names
.SH LIBRARY
@@ -19,10 +19,10 @@ Returns a list of the names of each codepoint in the text.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-text Text The text from which to extract codepoint names. -
+lb lb lbx
+l l l.
+Name Type Description
+text Text The text from which to extract codepoint names.
.TE
.SH RETURN
A list of codepoint names (`[Text]`).
@@ -38,3 +38,5 @@ assert "Amélie".codepoint_names() == [
"LATIN SMALL LETTER E",
]
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.ends_with.3 b/man/man3/tomo-Text.ends_with.3
index aa34489a..a9391874 100644
--- a/man/man3/tomo-Text.ends_with.3
+++ b/man/man3/tomo-Text.ends_with.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.ends_with 3 2025-11-09 "Tomo man-pages"
+.TH Text.ends_with 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.ends_with \- check suffix
.SH LIBRARY
@@ -36,3 +36,5 @@ remainder : Text
assert "hello world".ends_with("world", &remainder) == yes
assert remainder == "hello "
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.find.3 b/man/man3/tomo-Text.find.3
new file mode 100644
index 00000000..b145ae3c
--- /dev/null
+++ b/man/man3/tomo-Text.find.3
@@ -0,0 +1,40 @@
+'\" t
+.\" Copyright (c) 2025 Bruce Hill
+.\" All rights reserved.
+.\"
+.TH Text.find 3 2025-11-29 "Tomo man-pages"
+.SH NAME
+Text.find \- find a substring
+.SH LIBRARY
+Tomo Standard Library
+.SH SYNOPSIS
+.nf
+.BI Text.find\ :\ func(text:\ Text,\ target:\ Text,\ start:\ Int\ =\ 1\ ->\ Int)
+.fi
+.SH DESCRIPTION
+Find a substring within a text and return its index, if found.
+
+
+.SH ARGUMENTS
+
+.TS
+allbox;
+lb lb lbx lb
+l l l l.
+Name Type Description Default
+text Text The text to be searched. -
+target Text The target text to find. -
+start Int The index at which to begin searching. 1
+.TE
+.SH RETURN
+The index where the first occurrence of `target` appears, or `none` if it is not found.
+
+.SH EXAMPLES
+.EX
+assert "one two".find("one") == 1
+assert "one two".find("two") == 5
+assert "one two".find("three") == none
+assert "one two".find("o", start=2) == 7
+.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.from.3 b/man/man3/tomo-Text.from.3
index 2d15ac55..53df8278 100644
--- a/man/man3/tomo-Text.from.3
+++ b/man/man3/tomo-Text.from.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.from 3 2025-11-09 "Tomo man-pages"
+.TH Text.from 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.from \- slice from a starting index
.SH LIBRARY
@@ -19,11 +19,11 @@ Get a slice of the text, starting at the given position.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-text Text The text to be sliced. -
-first Int The index to begin the slice. -
+lb lb lbx
+l l l.
+Name Type Description
+text Text The text to be sliced.
+first Int The index to begin the slice.
.TE
.SH RETURN
The text from the given grapheme cluster to the end of the text.
@@ -36,3 +36,5 @@ A negative index counts backwards from the end of the text, so `-1` refers to th
assert "hello".from(2) == "ello"
assert "hello".from(-2) == "lo"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.from_c_string.3 b/man/man3/tomo-Text.from_c_string.3
index 18a7c576..32e6e4f5 100644
--- a/man/man3/tomo-Text.from_c_string.3
+++ b/man/man3/tomo-Text.from_c_string.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.from_c_string 3 2025-11-09 "Tomo man-pages"
+.TH Text.from_c_string 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.from_c_string \- convert C-style string to text
.SH LIBRARY
@@ -19,10 +19,10 @@ Converts a C-style string to a `Text` value.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-str CString The C-style string to be converted. -
+lb lb lbx
+l l l.
+Name Type Description
+str CString The C-style string to be converted.
.TE
.SH RETURN
A `Text` value representing the C-style string.
@@ -31,3 +31,5 @@ A `Text` value representing the C-style string.
.EX
assert Text.from_c_string(CString("Hello")) == "Hello"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.from_codepoint_names.3 b/man/man3/tomo-Text.from_codepoint_names.3
index 464e87e6..ac0bf01b 100644
--- a/man/man3/tomo-Text.from_codepoint_names.3
+++ b/man/man3/tomo-Text.from_codepoint_names.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.from_codepoint_names 3 2025-11-09 "Tomo man-pages"
+.TH Text.from_codepoint_names 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.from_codepoint_names \- convert list of unicode codepoint names to text
.SH LIBRARY
@@ -19,10 +19,10 @@ Returns text that has the given codepoint names (according to the Unicode specif
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-codepoint_names [Text] The names of each codepoint in the desired text (case-insentive). -
+lb lb lbx
+l l l.
+Name Type Description
+codepoint_names [Text] The names of each codepoint in the desired text (case-insentive).
.TE
.SH RETURN
A new text with the specified codepoints after normalization has been applied. Any invalid names are ignored.
@@ -39,3 +39,5 @@ text := Text.from_codepoint_names([
]
assert text == "Åke"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.from_utf16.3 b/man/man3/tomo-Text.from_utf16.3
index 6e52230e..be046ddb 100644
--- a/man/man3/tomo-Text.from_utf16.3
+++ b/man/man3/tomo-Text.from_utf16.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.from_utf16 3 2025-11-09 "Tomo man-pages"
+.TH Text.from_utf16 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.from_utf16 \- convert UTF16 list to text
.SH LIBRARY
@@ -19,10 +19,10 @@ Returns text that has been constructed from the given UTF16 sequence.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-bytes [Int16] The UTF-16 integers of the desired text. -
+lb lb lbx
+l l l.
+Name Type Description
+bytes [Int16] The UTF-16 integers of the desired text.
.TE
.SH RETURN
A new text based on the input UTF16 sequence after normalization has been applied.
@@ -35,3 +35,5 @@ The text will be normalized, so the resulting text's UTF16 sequence may not exac
assert Text.from_utf16([197, 107, 101]) == "Åke"
assert Text.from_utf16([12371, 12435, 12395, 12385, 12399, 19990, 30028]) == "こんにちは世界".utf16()
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.from_utf32.3 b/man/man3/tomo-Text.from_utf32.3
index 1f1689a6..7f78c191 100644
--- a/man/man3/tomo-Text.from_utf32.3
+++ b/man/man3/tomo-Text.from_utf32.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.from_utf32 3 2025-11-09 "Tomo man-pages"
+.TH Text.from_utf32 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.from_utf32 \- convert UTF32 codepoints to text
.SH LIBRARY
@@ -19,10 +19,10 @@ Returns text that has been constructed from the given UTF32 codepoints.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-codepoints [Int32] The UTF32 codepoints in the desired text. -
+lb lb lbx
+l l l.
+Name Type Description
+codepoints [Int32] The UTF32 codepoints in the desired text.
.TE
.SH RETURN
A new text with the specified codepoints after normalization has been applied.
@@ -34,3 +34,5 @@ The text will be normalized, so the resulting text's codepoints may not exactly
.EX
assert Text.from_utf32([197, 107, 101]) == "Åke"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.from_utf8.3 b/man/man3/tomo-Text.from_utf8.3
index 9cd848bc..497a6107 100644
--- a/man/man3/tomo-Text.from_utf8.3
+++ b/man/man3/tomo-Text.from_utf8.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.from_utf8 3 2025-11-09 "Tomo man-pages"
+.TH Text.from_utf8 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.from_utf8 \- convert UTF8 byte list to text
.SH LIBRARY
@@ -19,10 +19,10 @@ Returns text that has been constructed from the given UTF8 bytes.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-bytes [Byte] The UTF-8 bytes of the desired text. -
+lb lb lbx
+l l l.
+Name Type Description
+bytes [Byte] The UTF-8 bytes of the desired text.
.TE
.SH RETURN
A new text based on the input UTF8 bytes after normalization has been applied.
@@ -34,3 +34,5 @@ The text will be normalized, so the resulting text's UTF8 bytes may not exactly
.EX
assert Text.from_utf8([195, 133, 107, 101]) == "Åke"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.has.3 b/man/man3/tomo-Text.has.3
index 7e56020b..3397cc2b 100644
--- a/man/man3/tomo-Text.has.3
+++ b/man/man3/tomo-Text.has.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.has 3 2025-11-09 "Tomo man-pages"
+.TH Text.has 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.has \- check for substring
.SH LIBRARY
@@ -19,11 +19,11 @@ Checks if the `Text` contains some target text.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-text Text The text to be searched. -
-target Text The text to search for. -
+lb lb lbx
+l l l.
+Name Type Description
+text Text The text to be searched.
+target Text The text to search for.
.TE
.SH RETURN
`yes` if the target text is found, `no` otherwise.
@@ -33,3 +33,5 @@ target Text The text to search for. -
assert "hello world".has("wo") == yes
assert "hello world".has("xxx") == no
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.join.3 b/man/man3/tomo-Text.join.3
index 699765f3..0eccb241 100644
--- a/man/man3/tomo-Text.join.3
+++ b/man/man3/tomo-Text.join.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.join 3 2025-11-09 "Tomo man-pages"
+.TH Text.join 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.join \- concatenate with separator
.SH LIBRARY
@@ -19,11 +19,11 @@ Joins a list of text pieces with a specified glue.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-glue Text The text used to join the pieces. -
-pieces [Text] The list of text pieces to be joined. -
+lb lb lbx
+l l l.
+Name Type Description
+glue Text The text used to join the pieces.
+pieces [Text] The list of text pieces to be joined.
.TE
.SH RETURN
A single `Text` value with the pieces joined by the glue.
@@ -32,3 +32,5 @@ A single `Text` value with the pieces joined by the glue.
.EX
assert ", ".join(["one", "two", "three"]) == "one, two, three"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.left_pad.3 b/man/man3/tomo-Text.left_pad.3
index 30150211..4a12fe82 100644
--- a/man/man3/tomo-Text.left_pad.3
+++ b/man/man3/tomo-Text.left_pad.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.left_pad 3 2025-11-09 "Tomo man-pages"
+.TH Text.left_pad 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.left_pad \- left-pad text
.SH LIBRARY
@@ -35,3 +35,5 @@ Text with length at least `width`, with extra padding on the left as needed. If
assert "x".left_pad(5) == " x"
assert "x".left_pad(5, "ABC") == "ABCAx"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.lines.3 b/man/man3/tomo-Text.lines.3
index a2397c40..7c53ed54 100644
--- a/man/man3/tomo-Text.lines.3
+++ b/man/man3/tomo-Text.lines.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.lines 3 2025-11-09 "Tomo man-pages"
+.TH Text.lines 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.lines \- get list of lines
.SH LIBRARY
@@ -19,10 +19,10 @@ Splits the text into a list of lines of text, preserving blank lines, ignoring t
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-text Text The text to be split into lines. -
+lb lb lbx
+l l l.
+Name Type Description
+text Text The text to be split into lines.
.TE
.SH RETURN
A list of substrings resulting from the split.
@@ -35,3 +35,5 @@ assert "one\[rs]ntwo\[rs]nthree\[rs]n\[rs]n".lines() == ["one", "two", "three",
assert "one\[rs]r\[rs]ntwo\[rs]r\[rs]nthree\[rs]r\[rs]n".lines() == ["one", "two", "three"]
assert "".lines() == []
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.lower.3 b/man/man3/tomo-Text.lower.3
index eae3cebe..53563774 100644
--- a/man/man3/tomo-Text.lower.3
+++ b/man/man3/tomo-Text.lower.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.lower 3 2025-11-09 "Tomo man-pages"
+.TH Text.lower 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.lower \- convert to lowercase
.SH LIBRARY
@@ -33,3 +33,5 @@ The lowercase version of the text.
assert "AMÉLIE".lower() == "amélie"
assert "I".lower(language="tr_TR") == "ı"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.middle_pad.3 b/man/man3/tomo-Text.middle_pad.3
index a9358619..601129f6 100644
--- a/man/man3/tomo-Text.middle_pad.3
+++ b/man/man3/tomo-Text.middle_pad.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.middle_pad 3 2025-11-09 "Tomo man-pages"
+.TH Text.middle_pad 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.middle_pad \- pad text, centered
.SH LIBRARY
@@ -35,3 +35,5 @@ Text with length at least `width`, with extra padding on the left and right as n
assert "x".middle_pad(6) == " x "
assert "x".middle_pad(10, "ABC") == "ABCAxABCAB"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.quoted.3 b/man/man3/tomo-Text.quoted.3
index 5142eef8..921b5c59 100644
--- a/man/man3/tomo-Text.quoted.3
+++ b/man/man3/tomo-Text.quoted.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.quoted 3 2025-11-09 "Tomo man-pages"
+.TH Text.quoted 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.quoted \- add quotation marks and escapes
.SH LIBRARY
@@ -33,3 +33,5 @@ The text formatted as a quoted text.
.EX
assert "one\[rs]ntwo".quoted() == "\[rs]"one\[rs]\[rs]ntwo\[rs]""
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.repeat.3 b/man/man3/tomo-Text.repeat.3
index 3bfcce74..d917f96c 100644
--- a/man/man3/tomo-Text.repeat.3
+++ b/man/man3/tomo-Text.repeat.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.repeat 3 2025-11-09 "Tomo man-pages"
+.TH Text.repeat 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.repeat \- repeat text
.SH LIBRARY
@@ -19,11 +19,11 @@ Repeat some text multiple times.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-text Text The text to repeat. -
-count Int The number of times to repeat it. (Negative numbers are equivalent to zero). -
+lb lb lbx
+l l l.
+Name Type Description
+text Text The text to repeat.
+count Int The number of times to repeat it. (Negative numbers are equivalent to zero).
.TE
.SH RETURN
The text repeated the given number of times.
@@ -32,3 +32,5 @@ The text repeated the given number of times.
.EX
assert "Abc".repeat(3) == "AbcAbcAbc"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.replace.3 b/man/man3/tomo-Text.replace.3
index 16c7756b..8631f32a 100644
--- a/man/man3/tomo-Text.replace.3
+++ b/man/man3/tomo-Text.replace.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.replace 3 2025-11-09 "Tomo man-pages"
+.TH Text.replace 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.replace \- replace a substring
.SH LIBRARY
@@ -19,12 +19,12 @@ Replaces occurrences of a target text with a replacement text.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-text Text The text in which to perform replacements. -
-target Text The target text to be replaced. -
-replacement Text The text to replace the target with. -
+lb lb lbx
+l l l.
+Name Type Description
+text Text The text in which to perform replacements.
+target Text The target text to be replaced.
+replacement Text The text to replace the target with.
.TE
.SH RETURN
The text with occurrences of the target replaced.
@@ -33,3 +33,5 @@ The text with occurrences of the target replaced.
.EX
assert "Hello world".replace("world", "there") == "Hello there"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.reversed.3 b/man/man3/tomo-Text.reversed.3
index 6f06d4e6..821e1ab3 100644
--- a/man/man3/tomo-Text.reversed.3
+++ b/man/man3/tomo-Text.reversed.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.reversed 3 2025-11-09 "Tomo man-pages"
+.TH Text.reversed 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.reversed \- get a reversed copy
.SH LIBRARY
@@ -19,10 +19,10 @@ Return a text that has the grapheme clusters in reverse order.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-text Text The text to reverse. -
+lb lb lbx
+l l l.
+Name Type Description
+text Text The text to reverse.
.TE
.SH RETURN
A reversed version of the text.
@@ -31,3 +31,5 @@ A reversed version of the text.
.EX
assert "Abc".reversed() == "cbA"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.right_pad.3 b/man/man3/tomo-Text.right_pad.3
index 4c1a1efb..b91490f3 100644
--- a/man/man3/tomo-Text.right_pad.3
+++ b/man/man3/tomo-Text.right_pad.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.right_pad 3 2025-11-09 "Tomo man-pages"
+.TH Text.right_pad 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.right_pad \- right-pad text
.SH LIBRARY
@@ -35,3 +35,5 @@ Text with length at least `width`, with extra padding on the right as needed. If
assert "x".right_pad(5) == "x "
assert "x".right_pad(5, "ABC") == "xABCA"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.slice.3 b/man/man3/tomo-Text.slice.3
index f974e2af..ec7a160e 100644
--- a/man/man3/tomo-Text.slice.3
+++ b/man/man3/tomo-Text.slice.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.slice 3 2025-11-09 "Tomo man-pages"
+.TH Text.slice 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.slice \- get a slice of a text
.SH LIBRARY
@@ -38,3 +38,5 @@ assert "hello".slice(2, 3) == "el"
assert "hello".slice(to=-2) == "hell"
assert "hello".slice(from=2) == "ello"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.split.3 b/man/man3/tomo-Text.split.3
index b80023a0..27ae13b1 100644
--- a/man/man3/tomo-Text.split.3
+++ b/man/man3/tomo-Text.split.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.split 3 2025-11-09 "Tomo man-pages"
+.TH Text.split 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.split \- split a text by a delimiter
.SH LIBRARY
@@ -37,3 +37,5 @@ If an empty text is given as the delimiter, then each split will be the graphica
assert "one,two,,three".split(",") == ["one", "two", "", "three"]
assert "abc".split() == ["a", "b", "c"]
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.split_any.3 b/man/man3/tomo-Text.split_any.3
index 28eb7783..4e30e5d5 100644
--- a/man/man3/tomo-Text.split_any.3
+++ b/man/man3/tomo-Text.split_any.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.split_any 3 2025-11-09 "Tomo man-pages"
+.TH Text.split_any 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.split_any \- split a text by multiple delimiters
.SH LIBRARY
@@ -36,3 +36,5 @@ To split based on an exact delimiter, use Text.split().
.EX
assert "one, two,,three".split_any(", ") == ["one", "two", "three"]
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.starts_with.3 b/man/man3/tomo-Text.starts_with.3
index 5de9a947..b8b870eb 100644
--- a/man/man3/tomo-Text.starts_with.3
+++ b/man/man3/tomo-Text.starts_with.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.starts_with 3 2025-11-09 "Tomo man-pages"
+.TH Text.starts_with 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.starts_with \- check prefix
.SH LIBRARY
@@ -36,3 +36,5 @@ remainder : Text
assert "hello world".starts_with("hello", &remainder) == yes
assert remainder == " world"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.title.3 b/man/man3/tomo-Text.title.3
index bf4e768d..9b5b5245 100644
--- a/man/man3/tomo-Text.title.3
+++ b/man/man3/tomo-Text.title.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.title 3 2025-11-09 "Tomo man-pages"
+.TH Text.title 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.title \- titlecase
.SH LIBRARY
@@ -35,3 +35,5 @@ assert "amélie".title() == "Amélie"
# In Turkish, uppercase "i" is "İ"
assert "i".title(language="tr_TR") == "İ"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.to.3 b/man/man3/tomo-Text.to.3
index 7ca58bfa..2507311a 100644
--- a/man/man3/tomo-Text.to.3
+++ b/man/man3/tomo-Text.to.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.to 3 2025-11-09 "Tomo man-pages"
+.TH Text.to 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.to \- slice to an end index
.SH LIBRARY
@@ -19,11 +19,11 @@ Get a slice of the text, ending at the given position.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-text Text The text to be sliced. -
-last Int The index of the last grapheme cluster to include (1-indexed). -
+lb lb lbx
+l l l.
+Name Type Description
+text Text The text to be sliced.
+last Int The index of the last grapheme cluster to include (1-indexed).
.TE
.SH RETURN
The text up to and including the given grapheme cluster.
@@ -36,3 +36,5 @@ A negative index counts backwards from the end of the text, so `-1` refers to th
assert "goodbye".to(3) == "goo"
assert "goodbye".to(-2) == "goodby"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.translate.3 b/man/man3/tomo-Text.translate.3
index e436a2ee..2cac6a47 100644
--- a/man/man3/tomo-Text.translate.3
+++ b/man/man3/tomo-Text.translate.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.translate 3 2025-11-09 "Tomo man-pages"
+.TH Text.translate 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.translate \- perform multiple replacements
.SH LIBRARY
@@ -19,11 +19,11 @@ Takes a table mapping target texts to their replacements and performs all the re
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-text Text The text to be translated. -
-translations {Text:Text} A table mapping from target text to its replacement. -
+lb lb lbx
+l l l.
+Name Type Description
+text Text The text to be translated.
+translations {Text:Text} A table mapping from target text to its replacement.
.TE
.SH RETURN
The text with all occurrences of the targets replaced with their corresponding replacement text.
@@ -39,3 +39,5 @@ text := "A <tag> & an amperand".translate({
})
assert text == "A &lt;tag&gt; &amp; an ampersand"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.trim.3 b/man/man3/tomo-Text.trim.3
index fae9f3a5..1a2a8503 100644
--- a/man/man3/tomo-Text.trim.3
+++ b/man/man3/tomo-Text.trim.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.trim 3 2025-11-09 "Tomo man-pages"
+.TH Text.trim 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.trim \- trim characters
.SH LIBRARY
@@ -36,3 +36,5 @@ assert " x y z \[rs]n".trim() == "x y z"
assert "one,".trim(",") == "one"
assert " xyz ".trim(right=no) == "xyz "
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.upper.3 b/man/man3/tomo-Text.upper.3
index 6ac7e072..63d61bac 100644
--- a/man/man3/tomo-Text.upper.3
+++ b/man/man3/tomo-Text.upper.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.upper 3 2025-11-09 "Tomo man-pages"
+.TH Text.upper 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.upper \- uppercase
.SH LIBRARY
@@ -35,3 +35,5 @@ assert "amélie".upper() == "AMÉLIE"
# In Turkish, uppercase "i" is "İ"
assert "i".upper(language="tr_TR") == "İ"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.utf16.3 b/man/man3/tomo-Text.utf16.3
index b8696254..f65d05d2 100644
--- a/man/man3/tomo-Text.utf16.3
+++ b/man/man3/tomo-Text.utf16.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.utf16 3 2025-11-09 "Tomo man-pages"
+.TH Text.utf16 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.utf16 \- get UTF16 codepoints
.SH LIBRARY
@@ -19,10 +19,10 @@ Returns a list of Unicode code points for UTF16 encoding of the text.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-text Text The text from which to extract Unicode code points. -
+lb lb lbx
+l l l.
+Name Type Description
+text Text The text from which to extract Unicode code points.
.TE
.SH RETURN
A list of 16-bit integer Unicode code points (`[Int16]`).
@@ -32,3 +32,5 @@ A list of 16-bit integer Unicode code points (`[Int16]`).
assert "Åke".utf16() == [197, 107, 101]
assert "こんにちは世界".utf16() == [12371, 12435, 12395, 12385, 12399, 19990, 30028]
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.utf32.3 b/man/man3/tomo-Text.utf32.3
index 276e8dad..d43d31e7 100644
--- a/man/man3/tomo-Text.utf32.3
+++ b/man/man3/tomo-Text.utf32.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.utf32 3 2025-11-09 "Tomo man-pages"
+.TH Text.utf32 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.utf32 \- get UTF32 codepoints
.SH LIBRARY
@@ -19,10 +19,10 @@ Returns a list of Unicode code points for UTF32 encoding of the text.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-text Text The text from which to extract Unicode code points. -
+lb lb lbx
+l l l.
+Name Type Description
+text Text The text from which to extract Unicode code points.
.TE
.SH RETURN
A list of 32-bit integer Unicode code points (`[Int32]`).
@@ -31,3 +31,5 @@ A list of 32-bit integer Unicode code points (`[Int32]`).
.EX
assert "Amélie".utf32() == [65, 109, 233, 108, 105, 101]
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.utf8.3 b/man/man3/tomo-Text.utf8.3
index 8ace9dfb..5490c882 100644
--- a/man/man3/tomo-Text.utf8.3
+++ b/man/man3/tomo-Text.utf8.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.utf8 3 2025-11-09 "Tomo man-pages"
+.TH Text.utf8 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.utf8 \- get UTF8 bytes
.SH LIBRARY
@@ -19,10 +19,10 @@ Converts a `Text` value to a list of bytes representing a UTF8 encoding of the t
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-text Text The text to be converted to UTF8 bytes. -
+lb lb lbx
+l l l.
+Name Type Description
+text Text The text to be converted to UTF8 bytes.
.TE
.SH RETURN
A list of bytes (`[Byte]`) representing the text in UTF8 encoding.
@@ -31,3 +31,5 @@ A list of bytes (`[Byte]`) representing the text in UTF8 encoding.
.EX
assert "Amélie".utf8() == [65, 109, 195, 169, 108, 105, 101]
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.width.3 b/man/man3/tomo-Text.width.3
index 17666301..ec6307e2 100644
--- a/man/man3/tomo-Text.width.3
+++ b/man/man3/tomo-Text.width.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.width 3 2025-11-09 "Tomo man-pages"
+.TH Text.width 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.width \- get display width
.SH LIBRARY
@@ -19,10 +19,10 @@ Returns the display width of the text as seen in a terminal with appropriate fon
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-text Text The text whose length you want. -
+lb lb lbx
+l l l.
+Name Type Description
+text Text The text whose length you want.
.TE
.SH RETURN
An integer representing the display width of the text.
@@ -35,3 +35,5 @@ This will not always be exactly accurate when your terminal's font rendering can
assert "Amélie".width() == 6
assert "🤠".width() == 2
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.without_prefix.3 b/man/man3/tomo-Text.without_prefix.3
index 5c12c4e8..d1b902da 100644
--- a/man/man3/tomo-Text.without_prefix.3
+++ b/man/man3/tomo-Text.without_prefix.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.without_prefix 3 2025-11-09 "Tomo man-pages"
+.TH Text.without_prefix 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.without_prefix \- remove prefix
.SH LIBRARY
@@ -19,11 +19,11 @@ Returns the text with a given prefix removed (if present).
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-text Text The text to remove the prefix from. -
-prefix Text The prefix to remove. -
+lb lb lbx
+l l l.
+Name Type Description
+text Text The text to remove the prefix from.
+prefix Text The prefix to remove.
.TE
.SH RETURN
A text without the given prefix (if present) or the unmodified text if the prefix is not present.
@@ -33,3 +33,5 @@ A text without the given prefix (if present) or the unmodified text if the prefi
assert "foo:baz".without_prefix("foo:") == "baz"
assert "qux".without_prefix("foo:") == "qux"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-Text.without_suffix.3 b/man/man3/tomo-Text.without_suffix.3
index 08053ab0..b905bee8 100644
--- a/man/man3/tomo-Text.without_suffix.3
+++ b/man/man3/tomo-Text.without_suffix.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH Text.without_suffix 3 2025-11-09 "Tomo man-pages"
+.TH Text.without_suffix 3 2025-11-29 "Tomo man-pages"
.SH NAME
Text.without_suffix \- remove suffix
.SH LIBRARY
@@ -19,11 +19,11 @@ Returns the text with a given suffix removed (if present).
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-text Text The text to remove the suffix from. -
-suffix Text The suffix to remove. -
+lb lb lbx
+l l l.
+Name Type Description
+text Text The text to remove the suffix from.
+suffix Text The suffix to remove.
.TE
.SH RETURN
A text without the given suffix (if present) or the unmodified text if the suffix is not present.
@@ -33,3 +33,5 @@ A text without the given suffix (if present) or the unmodified text if the suffi
assert "baz.foo".without_suffix(".foo") == "baz"
assert "qux".without_suffix(".foo") == "qux"
.EE
+.SH SEE ALSO
+.BR Tomo-Text (3)
diff --git a/man/man3/tomo-ask.3 b/man/man3/tomo-ask.3
index 7eed621d..76e06e8f 100644
--- a/man/man3/tomo-ask.3
+++ b/man/man3/tomo-ask.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH ask 3 2025-11-09 "Tomo man-pages"
+.TH ask 3 2025-11-29 "Tomo man-pages"
.SH NAME
ask \- get user input
.SH LIBRARY
diff --git a/man/man3/tomo-at_cleanup.3 b/man/man3/tomo-at_cleanup.3
new file mode 100644
index 00000000..556178c9
--- /dev/null
+++ b/man/man3/tomo-at_cleanup.3
@@ -0,0 +1,38 @@
+'\" t
+.\" Copyright (c) 2025 Bruce Hill
+.\" All rights reserved.
+.\"
+.TH at_cleanup 3 2025-11-29 "Tomo man-pages"
+.SH NAME
+at_cleanup \- register a cleanup function
+.SH LIBRARY
+Tomo Standard Library
+.SH SYNOPSIS
+.nf
+.BI at_cleanup\ :\ func(fn:\ func()\ ->\ Void)
+.fi
+.SH DESCRIPTION
+Register a function that runs at cleanup time for Tomo programs. Cleanup time happens when a program exits (see `atexit()` in C), or immediately before printing error messages in a call to `fail()`. This allows for terminal cleanup so error messages can be visible as the program shuts down.
+
+
+.SH ARGUMENTS
+
+.TS
+allbox;
+lb lb lbx
+l l l.
+Name Type Description
+fn func() A function to run at cleanup time.
+.TE
+.SH RETURN
+Nothing.
+
+.SH NOTES
+Use this API very carefully, because errors that occur during cleanup functions may make it extremely hard to figure out what's going on. Cleanup functions should be designed to not error under any circumstances.
+
+.SH EXAMPLES
+.EX
+at_cleanup(func()
+ (/tmp/file.txt).remove(ignore_missing=yes)
+)
+.EE
diff --git a/man/man3/tomo-exit.3 b/man/man3/tomo-exit.3
index cb1ee064..865d8b72 100644
--- a/man/man3/tomo-exit.3
+++ b/man/man3/tomo-exit.3
@@ -2,14 +2,14 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH exit 3 2025-11-09 "Tomo man-pages"
+.TH exit 3 2025-11-29 "Tomo man-pages"
.SH NAME
exit \- exit the program
.SH LIBRARY
Tomo Standard Library
.SH SYNOPSIS
.nf
-.BI exit\ :\ func(message:\ Text?\ =\ none,\ status:\ Int32\ =\ Int32(1)\ ->\ Void)
+.BI exit\ :\ func(message:\ Text?\ =\ none,\ status:\ Int32\ =\ Int32(1)\ ->\ Abort)
.fi
.SH DESCRIPTION
Exits the program with a given status and optionally prints a message.
diff --git a/man/man3/tomo-fail.3 b/man/man3/tomo-fail.3
index 14fa0cf8..27eb0660 100644
--- a/man/man3/tomo-fail.3
+++ b/man/man3/tomo-fail.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH fail 3 2025-11-09 "Tomo man-pages"
+.TH fail 3 2025-11-29 "Tomo man-pages"
.SH NAME
fail \- abort the program
.SH LIBRARY
@@ -19,10 +19,10 @@ Prints a message to the console, aborts the program, and prints a stack trace.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-message Text The error message to print. -
+lb lb lbx
+l l l.
+Name Type Description
+message Text The error message to print.
.TE
.SH RETURN
Nothing, aborts the program.
diff --git a/man/man3/tomo-getenv.3 b/man/man3/tomo-getenv.3
index 1fa1f1e7..71f828eb 100644
--- a/man/man3/tomo-getenv.3
+++ b/man/man3/tomo-getenv.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH getenv 3 2025-11-09 "Tomo man-pages"
+.TH getenv 3 2025-11-29 "Tomo man-pages"
.SH NAME
getenv \- get an environment variable
.SH LIBRARY
@@ -19,10 +19,10 @@ Gets an environment variable.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-name Text The name of the environment variable to get. -
+lb lb lbx
+l l l.
+Name Type Description
+name Text The name of the environment variable to get.
.TE
.SH RETURN
If set, the environment variable's value, otherwise, `none`.
diff --git a/man/man3/tomo-print.3 b/man/man3/tomo-print.3
index 68ac5060..d6d2993f 100644
--- a/man/man3/tomo-print.3
+++ b/man/man3/tomo-print.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH print 3 2025-11-09 "Tomo man-pages"
+.TH print 3 2025-11-29 "Tomo man-pages"
.SH NAME
print \- print some text
.SH LIBRARY
diff --git a/man/man3/tomo-say.3 b/man/man3/tomo-say.3
index d6b7202f..7d40a88e 100644
--- a/man/man3/tomo-say.3
+++ b/man/man3/tomo-say.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH say 3 2025-11-09 "Tomo man-pages"
+.TH say 3 2025-11-29 "Tomo man-pages"
.SH NAME
say \- print some text
.SH LIBRARY
diff --git a/man/man3/tomo-setenv.3 b/man/man3/tomo-setenv.3
index 4e0c5ca3..56ab32bf 100644
--- a/man/man3/tomo-setenv.3
+++ b/man/man3/tomo-setenv.3
@@ -2,14 +2,14 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH setenv 3 2025-11-09 "Tomo man-pages"
+.TH setenv 3 2025-11-29 "Tomo man-pages"
.SH NAME
setenv \- set an environment variable
.SH LIBRARY
Tomo Standard Library
.SH SYNOPSIS
.nf
-.BI setenv\ :\ func(name:\ Text,\ value:\ Text\ ->\ Void)
+.BI setenv\ :\ func(name:\ Text,\ value:\ Text?\ ->\ Void)
.fi
.SH DESCRIPTION
Sets an environment variable.
@@ -19,11 +19,11 @@ Sets an environment variable.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-name Text The name of the environment variable to set. -
-value Text The new value of the environment variable. -
+lb lb lbx
+l l l.
+Name Type Description
+name Text The name of the environment variable to set.
+value Text? The new value of the environment variable. If \fBnone\fR, then the environment variable will be unset.
.TE
.SH RETURN
Nothing.
diff --git a/man/man3/tomo-sleep.3 b/man/man3/tomo-sleep.3
index 783e0aee..a2e4a707 100644
--- a/man/man3/tomo-sleep.3
+++ b/man/man3/tomo-sleep.3
@@ -2,7 +2,7 @@
.\" Copyright (c) 2025 Bruce Hill
.\" All rights reserved.
.\"
-.TH sleep 3 2025-11-09 "Tomo man-pages"
+.TH sleep 3 2025-12-11 "Tomo man-pages"
.SH NAME
sleep \- wait for an interval
.SH LIBRARY
@@ -19,10 +19,10 @@ Pause execution for a given number of seconds.
.TS
allbox;
-lb lb lbx lb
-l l l l.
-Name Type Description Default
-seconds Float64 How many seconds to sleep for. -
+lb lb lbx
+l l l.
+Name Type Description
+seconds Float64 How many seconds to sleep for.
.TE
.SH RETURN
Nothing.