diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-25 16:47:47 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-25 16:47:47 +0200 |
| commit | 515ce3752b5470ade8cd9f956f9d8f9cc80ac06f (patch) | |
| tree | 1ea4b98d46716ee135981dae52e522624a71006f /README.md | |
| parent | 86286ebe61c5bd0f88689d5d6155f09cc4879821 (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 'README.md')
| -rw-r--r-- | README.md | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -179,6 +179,30 @@ To show the current stack without modifying it: 45 ``` +## Boolean-to-Number Coercion + +Boolean values are automatically coerced to numbers when used in arithmetic operations: +- `true` is treated as `1` +- `false` is treated as `0` + +This enables mixed boolean-numeric expressions: + +```bash +gt 5 3 == 1 + # 5 == 3 is false (0), 0 + 1 = 1 +# → 1 + +gt 0 false + # false is 0, 0 + 0 = 0 +# → 0 + +gt true 2 * # true is 1, 1 * 2 = 2 +# → 2 + +gt 9 3 > 4 5 < + # 9 > 3 is true (1), 4 < 5 is true (1), 1 + 1 = 2 +# → 2 +``` + +Note: The boolean result is shown as `true`/`false` when printed, but when used as an operand it behaves as the corresponding numeric value. + ## Hyper Operators Hyper operators work on all values on the stack simultaneously: |
