package accessor

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

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