Dialyzer: Optimistic Type Checking for Erlang and Elixir
summary
Dialyzer claims an optimistic, gradual typing model that emits only provable errors using success typing and runs as a static analyzer over BEAM files. It infers specs, flags real mismatches (example: tuple elements swapped), enforces opaque types for encapsulation, and integrates into Mix via dialyxir mix plugin while requiring a PLT build that takes ~5–10 minutes. It catches bugs unit tests miss but also deliberately misses some errors and gives occasionally cryptic diagnostics.
AI-written summary · about
chapters (26)
- 0:00Introduction
- 0:47Technology Holy Wars
- 3:11Static vs Dynamic Typing
- 4:50What is Gradual Typing
- 6:37History of Type Checking in Erlang
- 9:37What is the Dialyzer
- 10:51What is success typing
- 11:47History and Elixir
- 12:36Type Inference
- 16:24Type Spec
- 17:24Types
- 18:06Numeric Types
- 19:04ListsTuples
- 20:16Maps
- 21:22Functions
- 21:59Custom Types
- 25:31Stack Module
- 31:28Dialyzer
- 34:53Dialyzer Features
- 36:01Jasons Personal Assessment
- 40:33Overlapping Domain Errors
- 42:53Compiler Optimization
- 43:36Typer
- 45:15Where to find more
- 46:28What does Dialyzer do
- 47:26How to run Dialyzer
related talks
38mChemanalysis: Dialyzing Elixir
29mSame same but different: A Comparative Analysis of Static Type Checkers in Erlang
36mTypeCheck Effortless Runtime Type Checking
10mLightning talk: Typechecking Elixir
19mAPI-driven Program Synthesis for Testing Static Typing Implementations
40mDebugging Elixir Code - The Tools, The Mindset
47mTesting the Hard Stuff and Staying Sane
20mType-level Property Based Testing
