This post explores how set-theoretic types in Elixir can address issues with data evolution in statically typed languages, focusing on maintaining backwards compatibility in library data definitions. It discusses challenges with breaking changes, illustrates the use of structural subtyping, explains a proposed versioning
Table of contents
Breaking changes: libraries vs applicationsReplicating the problem in ElixirData instantiation with structural subtypingType checking with revisionsMulti-field revisionsExplicit revision controlTransitive dependenciesA pinch of formalizationData evolutionSumming upSort: