-record(applicative_instance, { functor_instance :: fun(() -> fp:functor_instance(any(), any(), any(), any())), pure :: fun((any()) -> any()), ap :: fun((any(), any()) -> any()) }).