I learned something new here. I can't see function() in the list of built-in types http://www.erlang.org/doc/reference_manual/typespec.html, but it's obviously used in the OTP code and ours.