The main motivation is that the conventional approaches to data processing are based on manipulating mathematical <i>sets</i> for all kinds of use cases: we produce a new set if we want to calculate a new attribute, we produce a new set if want to match data from different tables, we get a new set if we aggregate data. Yet, we actually do not need to produce new sets (table, collections etc.) in many cases - it is enough to add a new column to an existing set. Here are more details about the motivation:<p><a href="https://prosto.readthedocs.io/en/latest/text/why.html" rel="nofollow">https://prosto.readthedocs.io/en/latest/text/why.html</a><p>Column is an implementation of a <i>function</i> (similarly to how table is an implementations of a set). Theoretically, this approach leads to a data model based on two core elements: mathematical <i>functions</i> (new) and mathematical <i>sets</i> (old).<p>This approach was implemented in Prosto which is a data processing toolkit radically changing how data is processed by heavily relying on functions and operations with functions - an alternative to map-reduce and join-groupby.