A subset of the operations of an applicative.
This is only the operations we need to have for building a record.
type 'a t
val map : 'a t ‑> f:('a ‑> 'b) ‑> 'b t
val both : 'a t ‑> 'b t ‑> ('a * 'b) t