1-module(ktn_type).
2
3-export([
4         get/1
5        ]).
6
7-type type() :: integer
8              | float
9              | list
10              | tuple
11              | binary
12              | bitstring
13              | boolean
14              | function
15              | pid
16              | port
17              | reference
18              | atom
19              | unknown
20              .
21
22-spec get(term()) -> type().
23get(X) when is_integer(X)   -> integer;
24get(X) when is_float(X)     -> float;
25get(X) when is_list(X)      -> list;
26get(X) when is_tuple(X)     -> tuple;
27get(X) when is_binary(X)    -> binary;
28get(X) when is_bitstring(X) -> bitstring;  % will fail before e12
29get(X) when is_boolean(X)   -> boolean;
30get(X) when is_function(X)  -> function;
31get(X) when is_pid(X)       -> pid;
32get(X) when is_port(X)      -> port;
33get(X) when is_reference(X) -> reference;
34get(X) when is_atom(X)      -> atom;
35
36get(_X)                     -> unknown.
37