Functional lenses in JavaScript