

This in turn suggests that there are many awesome type systems waiting to be implemented. To my knowledge, there are more logic systems in academic literature than there are type systems that have been implemented for programming languages. For example, Rust's type checker is an example of an affine type system which corresponds to an affine logic system.
#Haskell curry for free
For every new logic system (like linear logic) you get a type system for free (like linear types). Curry was a Penn State Mathematician Professor and Logician, and worked on techniques in math and computer science. There are many kinds of type systems just like there are many kinds of logic systems. Similarly, if you can create a value of the empty type in a programming language, that implies that the corresponding logic is not sound. For example, if you can prove a false proposition in a logic system, then that's typically an escape hatch in the corresponding type system. This can let you leverage your logical intuitions to reason about types or, vice versa, leverage your programming intuitions to reason about propositions.

This post gives a brief overview of how you can concretely translate logical propositions and proofs to types and programs. You don't have to understand or trust my explanation of how the proof works because you can delegate your trust to the compiler, which does all the work for you. What's neat about this is that the compiler mechanically checks this reasoning process. It covers formal methods, including algorithms and epi-theory, and offers a brief treatment of Markovs approach to algorithms. we can conclude anything from a false assumption, therefore we conclude that a is true Curry ISBN10: 0486634620 ISBN13: 9780486634623 Written by a pioneerof mathematical logic, this comprehensive graduate-level text explores theconstructive theory of first-order predicate calculus.If a is false then our assumption of not(not(a)) is also false.

