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