summaryrefslogtreecommitdiff
path: root/bool.notes
diff options
context:
space:
mode:
Diffstat (limited to 'bool.notes')
-rw-r--r--bool.notes53
1 files changed, 53 insertions, 0 deletions
diff --git a/bool.notes b/bool.notes
new file mode 100644
index 00000000..8e24c2b5
--- /dev/null
+++ b/bool.notes
@@ -0,0 +1,53 @@
+Thu Mar 18 21:05:29 IST 2021
+============================
+
+Design Notes for a Boolean Type in Gawk
+
+1. A new function bool(val) converts val to bool, returning Boolean TRUE
+or FALSE. This is the generator for boolean values and is enough to have
+instead of predefining new variables TRUE and FALSE.
+
+2. Assigning from a boolean value copies the bool type.
+
+3. Boolean variables have numeric values 1 and 0 respectively, and string
+values "TRUE" and "FALSE". Thus they differ from other variables where a
+"false" value must be zero and null.
+
+Given:
+
+ true = bool(1)
+ false = bool(0)
+
+this implies all of the following:
+
+ print(true) --> "TRUE"
+ print(false) --> "FALSE"
+ Same for %s in printf
+ Same for bool_var ""
+ printf %d gives 0/1
+
+4. typeof() returns "bool".
+
+5. Numeric operators treat booleans as numbers. asort() sorts booleans before
+numbers, and false before true.
+
+6. These string function generate a runtime fatal error
+if given an argument / target of boolean type:
+
+ gsub sub
+
+These functions merely treat the value as a string
+but issue a lint warning.
+
+ substr match index gensub
+ length split patsplit
+ tolower toupper
+
+7. Updates to API needed for an additional type, and the table
+for requested vs. returns.
+
+8. The following extensions need revising:
+
+ - JSON extension
+ - dump / read array extensions
+ - what else?