text: import curry2 from "../function/curry2";
  
  export const lensSymbol = Symbol("lensSymbol");
  
  /**
   * Takes a set of getter/setter functions
   * and wraps them in a lens object, that focuses on a specific part of a larger data object.
   * The lens should be used with the `view`, `set` and `over` functions.
   * The lens should not be used on its own
   * as its internal implementation should be treated as a black box.
   *
   * The getter and setter functions should not modify the original data object.
   * The getter should be a unary function with the data as its only argument.
   * The setter function should be a binary function that receives the new value as its first argument
   * and the data object as its second argument.
   *
   * @param {function} getter
   * @param {function} setter
   * @returns {object}
   * @see view
   * @see set
   * @see over
   */
  const lens = (getter, setter) => ({
    [lensSymbol]: {
      getter,
      setter,
    },
  });
  
  export default curry2(lens);
  