functional decorator idiom with functional composition
by dimitrs_papadimitriou
HTML
<script src="https://cdn.jsdelivr.net/gh/eu81273/jsfiddle-console/console.js"></script>
JavaScript
var createProduct = (value) => ({ price: () => value, })
var addPackaging = (product) => ({ price: () => product.price() + 0.5, })
var addRibons = (product) => ({ price: () => product.price() + 0.3, })
const compose = (...fns) => fns.reduce((f, g) => (...args) => f(g(...args)))
var finalProduct =addRibons(addPackaging(createProduct(20)))//function composition
var fincalProduct = compose(addRibons,addPackaging,createProduct)(20);
console.log(finalProduct.price())