  Most often, in a categorical semantics for a programming language, the
substitution of terms is expressed by composition and finite products. However
this does not deal with the order of evaluation of arguments, which may have
major consequences when there are side-effects. In this paper Cartesian effect
categories are introduced for solving this issue, and they are compared with
strong monads, Freyd-categories and Haskell's Arrows. It is proved that a
Cartesian effect category is a Freyd-category where the premonoidal structure
is provided by a kind of binary product, called the sequential product. The
universal property of the sequential product provides Cartesian effect
categories with a powerful tool for constructions and proofs. To our knowledge,
both effect categories and sequential products are new notions.
