Erlang records are just tuples
Erlang has a Record type which helps you write clearer code by having data structures that are self descriptive.
One thing that is interesting about a Record is that a record is just a tuple underneath the hood.
Erlang/OTP 22 [erts-10.4.4] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
Eshell V10.4.4 (abort with ^G)
1> rd(fruit, {name, color}).
fruit
2> #fruit{name="Apple", color="Red"}.
#fruit{name = "Apple",color = "Red"}
3> #fruit{name="Apple", color="Red"} == {fruit, "Apple", "Red"}.
true
As you can see, that internal representation is exposed when comparing a record to a tuple:
#fruit{name="Apple", color="Red"} == {fruit, "Apple", "Red"}.
You can even use pattern matching with the two data structures:
7> #fruit{name="Apple", color=NewColor} = {fruit, "Apple", "Green"}.
#fruit{name = "Aplle",color = "Green"}
8> NewColor.
"Green"
Tweet