summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-25 16:47:47 +0200
committerPaul Buetow <paul@buetow.org>2026-03-25 16:47:47 +0200
commit515ce3752b5470ade8cd9f956f9d8f9cc80ac06f (patch)
tree1ea4b98d46716ee135981dae52e522624a71006f /internal
parent86286ebe61c5bd0f88689d5d6155f09cc4879821 (diff)
docs: Update README.md and godoc for Boolean-to-Number coercion
- Added documentation section to README.md explaining automatic coercion - Included usage examples: '5 3 == 1 +', '0 false +', 'true 2 *', '9 3 > 4 5 < +' - Updated Value type godoc to explain coercion behavior (true→1, false→0) - toNumber() function already had good documentation The coercion allows boolean results to be used directly in arithmetic operations, enabling expressions like '5 3 == 1 +' where '5 3 ==' produces false=0, then '0 + 1' produces 1.
Diffstat (limited to 'internal')
-rw-r--r--internal/rpn/variables.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/internal/rpn/variables.go b/internal/rpn/variables.go
index de98e2f..5214403 100644
--- a/internal/rpn/variables.go
+++ b/internal/rpn/variables.go
@@ -14,6 +14,14 @@ var (
)
// Value represents a variant type that can hold either a number (float64) or a boolean.
+//
+// When used in arithmetic operations, boolean values are automatically coerced:
+// - true → 1
+// - false → 0
+//
+// This allows boolean results from comparison operations to be used directly in
+// arithmetic expressions (e.g., "5 3 == 1 +" where "5 3 ==" produces false=0,
+// and "0 + 1" produces 1).
type Value struct {
isBool bool
boolVal bool