iitalics/ppx_lens

Fix / document prefix removal

iitalics opened this issue · 0 comments

Right now, common field prefixes are automatically removed:

# type glasses =
    { gl_len : int;
      gl_bridge : int;
      gl_diam : int }
        [@@lens generate ~just_lens] ;;
type glasses = { gl_len : int; gl_bridge : int; gl_diam : int; }
val _len : (glasses -> int) * (int -> glasses -> glasses) = (<fun>, <fun>)
val _bridge : (glasses -> int) * (int -> glasses -> glasses) = (<fun>, <fun>)
val _diam : (glasses -> int) * (int -> glasses -> glasses) = (<fun>, <fun>)

Note the absense of the gl_ prefix in the lenses. However

  1. users may want to turn off this behavior
  2. it behaves strangely for unintentional prefixes:
# type oof = { oof : int ; ouch : int } [@@lens generate ~just_lens] ;;
type oof = { oof : int; ouch : int; }
val _of : (oof -> int) * (int -> oof -> oof) = (<fun>, <fun>)
val _uch : (oof -> int) * (int -> oof -> oof) = (<fun>, <fun>)
  1. it's not documented in the README