Higher-order contracts for JavaScript. - Roman Matthias Keil (2018)