Please log in to watch this conference skillscast.
Haskell is known for its strong static typing but there are even stronger typing disciplines! Refinement types are types 'annotated' with 'predicates'. Dependent types allow terms to appear in types. Both of these disciplines allow the programmer to be more specific. A classic example is defining a type of lists of length 'n'. Both of these disciplines allow the programmer to prove that some function is valid on all possible inputs, a much stronger proof of correctness than a battery of tests. How are these two disciplines different? How do they work? How can you experiment with them? I'll answer these questions and demonstrate with examples in A Brief Introduction to Refinement Types and Dependent Types.
You can also view the slides from this talk here.
YOU MAY ALSO LIKE:
- Haskell eXchange 2021: Novice Track (Online Conference on 15th November 2021)
- Haskell eXchange 2021: Pro Track (Online Conference on 16th - 17th November 2021)
- Hashing Modulo Alpha Equivalence (SkillsCast recorded in May 2021)
- In The Belly Of The Whale: Tales From Haskell In The Enterprise (SkillsCast recorded in May 2021)
Stronger Types! : A Brief Introduction to Refinement Types and Dependent Types (Lightning Talk)
Eric Bond a software engineer and functional programming consultant at 47 Degrees in Seattle by day.. type theorist and proof engineer by night. He spends his free time reading papers in formal verification and categorical semantics. Scala pays the bills but his heart belongs to Agda, Haskell, and Coq.