I am wondering if there is a good way to complete the following analogy:
monad : Kleisli category :: applicative functor : ??
That is, a given monad T on a category C gives rise to its Kleisli category C_T, whose objects are those of C, but whose morphisms between A and B are the morphisms between A and T(B) in C (Wikipedia entry). What I'd like to know is if there is a kind of "equivalent" notion for applicatives.
At first blush, it seems that such a category would be constructed in the following way, given a category C and an applicative functor (F : C -> C, pure, (<*>)). The category C_F is the one whose objects are taken from C (as above), but whose morphisms between A and B are in one-to-one correspondence with the morphisms between 1 and F(B^A) in C - that is, "elements" of F(B^A). In addition, identities and composition are given by:
id_(C_F)_A = pure id_C_A
f o_(C_F) g = pure (o_C) <*> f <*> g
where id_X_A is the identity on A in category X, and (o_X) is composition between morphisms in X.