Erlang Programming/Additional Types
Additional Types
[edit | edit source]We 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
[edit | edit source]Erlang 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.