... This is particularly idiomatic for higher order functions, but I think it can be useful for other things if used with restraint.
But if you have functions that only need to be called from one calling function then I why not just inline the code and eschew having a function at all. Long function bodies for the win!
Yes, perhaps I wasn’t clear — I’m advocating for just the inlined version, not the nested function in the general case.
The nested function is, I think, fine when it’s so tiny it’s not worth unit testing (like, it-could-have-been-a-lambda small) or when bar is returned by foo (ie foo is higher order), in which case you can test the return value. Apart from that… restraint!
But if you have functions that only need to be called from one calling function then I why not just inline the code and eschew having a function at all. Long function bodies for the win!