README.md

# Typable

Protocol which describes type identifier of Elixir term

[![Hex](https://raw.githubusercontent.com/tim2CF/static-asserts/master/build-passing.svg?sanitize=true)](https://hex.pm/packages/typable/)
[![Documentation](https://raw.githubusercontent.com/tim2CF/static-asserts/master/documentation-passing.svg?sanitize=true)](https://hexdocs.pm/typable/)

<img src="priv/img/logo.png" width="300"/>

## Installation

The package can be installed by adding `typable` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:typable, "~> 0.3.0"}
  ]
end
```

## Examples

```elixir
iex> require Type
Type

iex> Type.type_of(1)
Integer
iex> Type.type_of(self())
PID
iex> Type.type_of(%URI{})
URI

iex> Type.instance_of(Integer)
0
iex> Type.instance_of(PID)
#PID<0.0.0>
iex> Type.instance_of(URI)
%URI{
  authority: nil,
  fragment: nil,
  host: nil,
  path: nil,
  port: nil,
  query: nil,
  scheme: nil,
  userinfo: nil
}
```