Imperative bcom
Right now bcom is functional; I like this in many ways, bcom is actually a sealer, and so we get to preserve functional mechanics,.
This has two main advantages:
- It prevents dangerous uses of bcom, like within an
onorawait, where the world has changed, encouraging use of cells in such a case, etc. This has saved a couple of people by preventing making such a mistake! - It's technically functional!!!!!
But, since the goblin kernel is waiting for the return value to see if it's a bcom or not, this prevents proper tail call elimination... attempting to do iteration through recursion using $ results in a stack overflow. This has bitten a couple of people!
The right solution maybe: make bcom imperative but blow up if it's used outside that actor's invocation!
Thanks to @tsyesika for helping me think this through.
Edited by Christine Lemmer-Webber