Ahhh, I see my confusion here. Got mixed up with the abstractions (isEven != isEmtpy) and thought there was something crazy going on with lists of numbers implementing isEmpty.
On the whole I do agree with you about all this mess. The JS stdlib has a lot to answer for.