Forum Discussion
BigSpill: A 92‑Function Excel LAMBDA Library for Dynamic Arrays
I am hugely impressed by the level of effort that must have gone into preparing this compendium of spreadsheet techniques! I normally investigate an idea but fail to take it to the appropriate level of documentation for publication.
I have recently also worked on calculations that use convolution but presented it as deferred financial commitments rather than as a mathematical operation (I once did that using Fast Fourier Transformation).
DEFERREDλ = LAMBDA(current, spread, [initial],
LET(
_initialϑ, IF(ISOMITTED(initial), THUNK(HSTACK(0, 0 * spread)), THUNK(initial)),
accountsϑ, SCAN(_initialϑ, current,
LAMBDA(incomingϑ, expense,
LET(
distributed, expense * HSTACK(0, spread),
committed, HSTACK(DROP(incomingϑ(),, 1), 0) + distributed,
THUNK(committed)
)
)
),
return, MAP(accountsϑ, LAMBDA(aϑ, @(aϑ()))),
return
)
);Rather than the 'sensible' approach of laying out the array and the kernel othogonally to generate a 2D array, I chose to work with an array of thunks!
I appreciate the kind words! My goal with BigSpill is to get the functions out there and get the word out that Excel is a highly capable programming language.
I've downloaded your workbook and have been studying your approach to convolution with thunks. This is certainly a different mental model than the way I think through a problem. The elegance is impressive. It reminds me of your matrix flow accumulation solution - hydro flow. I may have more to say after I've had some time to digest the module.
I've been working on polishing Triplewiseλ/Quadwiseλ. The latter of which helps with making extraction of overlapped windows easier. This is a snip using djclements 's workbook from the Braille challenge.
- PeterBartholomew1Sep 04, 2026Silver Contributor
The thought process I am aiming at is to programme with high-level entities such as data dictionaries or tables with array fields and work towards a solution top to bottom rather than building up from single cells and index arithmetic (addressing single elements of arrays). David's Braille challenge was interesting but I didn't get to a point where I could publish it. The OP deserved more discussion. djclements
= BRAILLE.READλ(phrase) = BRAILLE.WRITEλ(words)The formulas don't give that much away 😃😃
- Patrick2788Sep 04, 2026Silver Contributor
I'm guessing you didn't solve it with convolution as there's at least one overlap in the windowing that would cause a false return. Unless you noticed this and worked around it?