Relation between Cartesian Closed Category and Terminating Programs.
- Simply Typed Lambda Calculus (STLC) is a Cartesian Closed Category (CCC), it has all products, objects that represent arrows and a terminal object. Also, STLC is not Turing Complete since all computations end (by the Strong Normalization Theorem).
- Damas-Milner (DM) is a model of STLC with the "let" operator, witch alows you to construct non-terminating computations and Turing Complete programs (I don't know if the last one is true, I'have never seen a proof). That sayed, I think there is no longer a terminal object in the "Category of Damas-Milner", because partial computations are allowed and there is no unique arrow from all types to some hypothetic terminal type.
I would like to know (if known by humanity) if there is any relation between "non-Turing Complete" typed systems and "Cartesian Closed Categorys".
EDIT:
I made a mistake in 2: "the "let" operator, witch alows you to construct non-terminating computations" isn't true. I didn't know that $\lambda f . let\: x\: = f\: x\: in\: x$ is not a typable term in DM. So DM may not allow non-terminating computations.
Also, I found that System-F is strongly normalizing. But that implies HM is strongly normalizing too?
EDIT 2: "Every term that is well-typed in HM is well-typed in System F. Every well-typed term in System F is SN. Therefore every term that is well-typed in HM is SN. – Gilles" in link