Module Accessor.Simple

Accessors are commonly not indexed and don't need to support polymorphic updates. In such cases, it may be easier to read and write types in terms of Simple.t. Here is an example where the improvement by using Simple.t is significant:

val date_ofday
  :  Time.Zone.t
  -> ( 'i -> Date.t * Time.Ofday.t -> Date.t * Time.Ofday.t
     , 'i -> Time.t -> Time.t
     , [< isomorphism] )
       Accessor.t

It is more cleanly written like this:

val date_ofday
  :  Time.Zone.t
  -> (_, Date.t * Time.Ofday.t, Time.t, [< isomorphism]) Accessor.Simple.t
type nonrec ('index, 'inner, 'outer, 'kind) t = ('index -> 'inner -> 'inner'index -> 'outer -> 'outer'kind) t