RML - ML modules and functors as first-class citizens - Willems, Danny (2017)