| for is a special form because it does lexical | binding, which can't be done from a primitive, because the primitives don't | have the same lexical scope as their arguments. Sounds like es needs macros. Scheme has some good ideas on that score.