Typed columns and null #13

Merged
lilleman merged 10 commits from typed-columns into main 2026-09-15 15:19:39 +02:00
2 changed files with 8 additions and 2 deletions
Showing only changes of commit 8ca887aa7d - Show all commits
+1 -1
View File
@@ -73,7 +73,7 @@ type builtin struct {
// for a builtin that reads none.
operands func(args []string) []string
// number bounds the number a call prints and names the datatype its text is; nil
// for a builtin that prints text.
// for a builtin whose text is no number.
number func(args []string) (proven, DataType)
}
+7 -1
View File
@@ -92,7 +92,9 @@ func (p *valueProof) template(t *template) proven {
case t.fixed:
return literalValue(t.lit)
case len(t.ops) != 1:
return unproven(fmt.Sprintf("%q is not one value; write one literal or one {int()}, {float()}, {seq()} or {calc()}, or read one", t.format))
v := unproven(notOneValue(t.format, "{int()}, {float()}, {seq()} or {calc()}"))
v.notNumber = notOneValue(t.format, "{int()}, {float()}, {seq()}, {digits()} or {calc()}")
return v
}
body := t.format[1 : len(t.format)-1]
name, args, isFunc := funcCall(body)
@@ -227,6 +229,10 @@ func printing(token string, prints DataType, v proven) proven {
return v
}
func notOneValue(format, calls string) string {
return fmt.Sprintf("%q is not one value; write one literal or one %s, or read one", format, calls)
}
// unproven is a render no datatype and no calc can take, for why.
func unproven(why string) proven {
v := proven{notNumber: why}