Erlang Programming/Additional Types
Additional Types
editWe have already seen the following types: tuple, list, integer, float, function and pid. We can check the type of an object by testing it.
1> is_pid( self() ). true
If you wish to convert between types, lists are the lingua franca of types in Erlang so make it a list first on your way to something else. Remember, type conversion is not a parallel-safe operation.
Some additional types are: port and reference.
A port is a connection to the external world. Typically ports generate and/or consume bit streams. Binary data is considered untyped data in Erlang. (See BitSyntax).
A reference is a globally unique symbol and is generated with:
19> make_ref(). #Ref<0.0.0.88>
A reference is only useful when a unique tag is needed across all connected processes. Do not confuse the term reference with a references in C, which points to data. An Erlang reference is only a unique tag.
Erlang Has No Boolean Type
editErlang has no Boolean type. It has the atoms (true and false) which are generated by certain functions and expected by certain functions like guards and list comprehensions. The function: is_constant() generates either true or false.
We can test whether an object is a constant.
1> is_constant(a) true 2> is_atom(a). true
Because atoms are represented as constant numbers, atoms are constants.
is_constant(A). ** 1: variable 'A' is unbound ** 5> A=1. 1 6> is_constant(A). true
Theoretically, because the Boolean type is not built in, it should make it easier to let Erlang compute with alternate types of logic, {true, false, null} for instance.