Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Practical use of improper lists in Erlang (perhaps all functional languages)

I've been reading Erlang and OTP in action, and stumbled upon a question with regards to improper lists.

Don’t be tempted to use list cells this way even if you think you have a clever idea — it’s bug-prone and confuses both humans and program analysis tools. That said, there are one or two valid uses for creating improper lists, but they’re considered advanced programming techniques and are beyond the scope of this book.

Out of scope for the book? It must be perfect for Stackoverflow!
So my question is, of course, what would some valid uses would be?

like image 917
Tjelle Avatar asked Feb 23 '11 08:02

Tjelle


1 Answers

OTP standard digraph module for directed graphs uses improper lists for tagged vertex and edge identifiers. For example, vertex 42 would be identified as ['$v'|42], which means a pair of an atom (no, not a character literal!) and an integer, similarly edge 97 would be ['$e'|97].

like image 112
mikhailfranco Avatar answered Oct 26 '22 22:10

mikhailfranco