Big Data provoked a quest for better basic technologies, like programming languages,
that the analyzer has at its disposal when processing distributed datasets.
Somewhat surprisingly the well-known paradigm of functional programming,
when used in conjunction with object orientation turned out to match well those specific demands.
Several new languages like Scala or Kotlin appeared on that market and filled the niche.
They set an example that impacts the direction and design of libraries rooted
in traditionally non-functional programming languages like for instance Java streams or the c++20 Ranges library.
It is expected that next generations of students would learn that way
of thinking when it gets to data processing and expect it from every data processing system.
The characteristics of the code written in a functional style are its terseness and expressibility, especially for processing collections.
The data is typically processed in a lazy manner and thus resulting programs are quite CPU efficient.
In ROOT the RDataFrame leverages from this idea already for several years.
The FunRootAna is an attempt to provide a functional and modern collections library to ROOT users.
The design of it is inspired by Scala however the FunRootAna offers primarily the lazy approach.
A lean interface for collections processing demands a similarly typing-efficient
approach to handling the usual lifetime of the histograms, that is declaration, booking, and filling requiring instead only one line of code.
The promise made to the adopters of FunRootAna is that a line of code would be sufficient to generate a single histogram.
Would that not be fun?
To find out more: https://tboldagh.github.io/FunRootAna/