Todos los lenguajes de programación basados en el cálculo lambda (Haskell, (OCa)ML, Clean, Coq, Agda) forman una categoría -- de hecho, de muchas maneras diferentes. Una forma es tener un objeto para cada tipo del lenguaje y un morfismo para cada expresión bien tipada con exactamente una variable libre. Si el lenguaje de programación tiene tipos lineales entonces esta categoría no tendrá un objeto terminal, ya que tal objeto implicaría la capacidad de "descartar" un valor de cualquier tipo.
Los tipos lineales son extremadamente útiles para dar a los lenguajes de programación funcional pura la capacidad de expresar operaciones de efecto lateral. En términos generales, se tiene un tipo lineal llamado "mundo"; cada función impura toma y devuelve un valor de ese tipo (y quizás también otros valores). Como no se puede duplicar o descartar un "mundo", su manejo impone un orden de evaluación determinista en todas las funciones impuras, y las transformaciones del programa no alterarán este orden. El resultado agregado de los efectos secundarios puede entonces ser razonado (formalmente, incluso).