Skip to content

Properly defining Erlang lists

Albert Schimpf, Stefan Wehr, Annette Bieniusa

cs.PLarXiv:2611.04929

Abstract

We define list types, distinguishing proper lists, which end in the empty list, from improper lists, which may end in any value. Both are encoded as recursive types of cons cells, implemented in etylizer. This work found one OTP compiler bug. We propose a one-line sound improvement to Dialyzer's list handling that finds six instances of dead code in the OTP code base. We compare BEAM VM type checkers and catalogue how other languages design lists and cons cells.

Create a lesson