  Substructural type systems, such as affine (and linear) type systems, are
type systems which impose restrictions on copying (and discarding) of
variables, and they have found many applications in computer science, including
quantum programming. We describe one linear and one affine type systems and we
formulate abstract categorical models for both of them which are sound and
computationally adequate. We also show, under basic assumptions, that
interpreting lambda abstractions via a monoidal closed structure (a popular
method for linear type systems) necessarily leads to degenerate and inadequate
models for call-by-value affine type systems with recursion. In our categorical
treatment, a solution to this problem is clearly presented. Our categorical
models are more general than linear/non-linear models used to study linear
logic and we present a homogeneous categorical account of both linear and
affine type systems in a call-by-value setting. We also give examples with many
concrete models, including classical and quantum ones.
