Ah, that’s really interesting.
Thanks for the insight!
For your Monkey X example:
Are you sure calling remove on the iterator is safe?
It’s been a source of dangerous and undefined behavior in many programming languages.
Just a surprising pattern to see if so. 
As far as passing functions:
Yep! I anticipate using passed functions quite a bit in Monkey 2.  I’m very familiar with that style of programming.
I do it quite a bit in C++, Python, Common Lisp. 