Motivation
IEnumerable is a library that allows you to create deeply immutable collections and query them with a Linq syntax. IEnumerable infact, is born from the idea to bring Linq in JavaScript environment. Linq is a fantastic technique to query data and JavaScript should have it. In addition, we want to maintain the advantages of Immutable Js and improve them. In IEnumerable, not only the collection is immutable but also its content. Every method will return a new Enumerable and a new copy of its content. IEnumerable should not be confused with Rx due to its syntax, IEnumerable and Rx are two different things that achieve different purposes. Here is an interesting question about that.