I’m wondering whether representing formulas structurally (instead of plain text) could make them easier to read and modify, but I’m not sure if this really helps in practice.
How do you usually handle large formulas?
=LET(data; F4:F34;
dummy1; "This is a made up average function; this string is ignored";
dummy2; "one limitation is that you cant really overwrite variable names";
tally; COUNTA(data);
total; SUM(data);
total/tally)
It also avoids recomputing intermediate stuff. You can also encapsulate things in a LAMBDA anonymous function: =LET(data; F4:F34;
mymeanfunction; LAMBDA(data;
LET(tally; COUNTA(data);
total; SUM(data);
total/tally));
mean1; mymeanfunction(data);
mean2; mymeanfunction(OFFSET(data;0;1));doc;"FIXME, this should have its own variable name to refer explicitly to G4:G34";
AVERAGE(mean1;mean2))
You could also move the LAMBDA to the name registry and use that function similarly to how you would use a named range or a built-in formula!Coming from a lisp background, I was ecstatic to see this, but they have heavy technical limitations. I did play a little bit though with these concepts and the dynamic array functions. Fun functions to explore:
- DROP, TAKE, CHOOSECOLS, CHOOSEROWS to cut arrays
- INDEX, OFFSET, COLUMN, ROW to navigate
- WRAPCOLS, WRAPROWS, TOROW, TOCOL, VSTACK, HSTACK, TRANSPOSE to shape arrays
- MAP, SCAN, REDUCE to compute on top of arrays
There's more!