Type systems are leaky abstractions: the case of Map.take!/2
Summary
Explores how adding a type system to a dynamic language like Elixir affects the modeling of Map.take!/2, including issues with type signatures, runtime behavior, and the tension between static guarantees and runtime flexibility. It compares Elixir and TypeScript approaches, discusses potential unsoundness, and considers macros as a possible solution for compile-time correctness in key selection.