View Source ExToolkit.Kernel (ExToolkit v0.9.6)

Basic language primitives to ease development flow.

Summary

Functions

Defines a module attribute and a function to get it. Inspired by attr_reader from ruby.

Returns the atom :error.

Wraps a given value in a tuple tagged with :error.

Returns the atom :ok.

Wraps a given value in a tuple tagged with :ok.

Determines the type of the given term.

Types

@type type() ::
  nil
  | :float
  | :integer
  | :boolean
  | :atom
  | :binary
  | :list
  | :tuple
  | :exception
  | :struct
  | :map
  | :function
  | :pid
  | :term

Functions

Link to this macro

defattr(attrs)

View Source (macro)

Defines a module attribute and a function to get it. Inspired by attr_reader from ruby.

Examples

iex> defmodule ExampleModule do
...>   require ExToolkit.Kernel
...>   defattr foo: :bar
...> end
iex> ExampleModule.foo()
:bar

iex> defmodule ExampleModule2 do
...>   require ExToolkit.Kernel
...>   defattr name: "ExToolkit", version: "1.0.0"
...> end
iex> %{name: ExampleModule2.name(), version: ExampleModule2.version()}
%{name: "ExToolkit", version: "1.0.0"}

iex> defmodule ExampleModule3 do
...>   require ExToolkit.Kernel
...>   defattr [version: Version.parse!("1.0.1")]
...> end
iex> ExampleModule3.version()
%Version{major: 1, minor: 0, patch: 1}
@spec error() :: :error

Returns the atom :error.

Example

iex> error()
:error
@spec error(term()) :: {:error, term()}

Wraps a given value in a tuple tagged with :error.

Examples

iex> error("something went wrong")
{:error, "something went wrong"}

iex> error(404)
{:error, 404}
@spec ok() :: :ok

Returns the atom :ok.

Example

iex> ok()
:ok
@spec ok(term()) :: {:ok, term()}

Wraps a given value in a tuple tagged with :ok.

Examples

iex> ok(42)
{:ok, 42}

iex> ok("hello")
{:ok, "hello"}
@spec type_of(term()) :: type()

Determines the type of the given term.

Examples

iex> type_of(3.14)
:float

iex> type_of(42)
:integer

iex> type_of(true)
:boolean

iex> type_of(:atom)
:atom

iex> type_of("string")
:binary

iex> type_of([1, 2, 3])
:list

iex> type_of({:ok, 1})
:tuple

iex> type_of(%{})
:map

iex> type_of(fn -> :ok end)
:function

iex> type_of(%URI{})
:struct

iex> type_of(%RuntimeError{})
:exception

iex> type_of(self())
:pid

iex> type_of(nil)
nil