<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="generator" content="ExDoc v0.19.1"> <title>API Reference – Elixir v1.7.2</title> <link rel="stylesheet" href="dist/app-240d7fc7e5.css" /> <link rel="canonical" href="https://hexdocs.pm/elixir/v1.7/api-reference.html" /> <script src="dist/sidebar_items-cdf4e58b19.js"></script> </head> <body data-type="extras"> <script>try { if(localStorage.getItem('night-mode')) document.body.className += ' night-mode'; } catch (e) { }</script> <div class="main"> <button class="sidebar-button sidebar-toggle"> <span class="icon-menu" aria-hidden="true"></span> <span class="sr-only">Toggle Sidebar</span> </button> <button class="sidebar-button night-mode-toggle"> <span class="icon-theme" aria-hidden="true"></span> <span class="sr-only">Toggle Theme</span> </button> <section class="sidebar"> <a href="http://elixir-lang.org/docs.html" class="sidebar-projectLink"> <div class="sidebar-projectDetails"> <h1 class="sidebar-projectName"> Elixir </h1> <h2 class="sidebar-projectVersion"> v1.7.2 </h2> </div> <img src="assets/logo.png" alt="Elixir" class="sidebar-projectImage"> </a> <form class="sidebar-search" action="search.html"> <button type="submit" class="search-button"> <span class="icon-search" aria-hidden="true"></span> </button> <input name="q" type="text" id="search-list" class="search-input" placeholder="Search" aria-label="Search" autocomplete="off" /> </form> <ul class="sidebar-listNav"> <li><a id="extras-list" href="#full-list">Pages</a></li> <li><a id="modules-list" href="#full-list">Modules</a></li> <li><a id="exceptions-list" href="#full-list">Exceptions</a></li> </ul> <div class="gradient"></div> <ul id="full-list" class="sidebar-fullList"></ul> </section> <section class="content"> <div class="content-outer"> <div id="content" class="content-inner"> <h1> <small class="visible-xs">Elixir v1.7.2</small> API Reference </h1> <section class="details-list"> <h2 id="modules" class="section-heading"> <a href="#modules" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a> Modules </h2> <div class="summary"> <div class="summary-row"> <div class="summary-signature"> <a href="Access.html">Access</a> </div> <div class="summary-synopsis"><p>Key-based access to data structures</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Agent.html">Agent</a> </div> <div class="summary-synopsis"><p>Agents are a simple abstraction around state</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Application.html">Application</a> </div> <div class="summary-synopsis"><p>A module for working with applications and defining application callbacks</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Atom.html">Atom</a> </div> <div class="summary-synopsis"><p>Convenience functions for working with atoms</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Base.html">Base</a> </div> <div class="summary-synopsis"><p>This module provides data encoding and decoding functions according to <a href="https://tools.ietf.org/html/rfc4648">RFC 4648</a></p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Behaviour.html">Behaviour</a> <span class="deprecated" title="Use @callback and @macrocallback attributes instead">deprecated</span> </div> <div class="summary-synopsis"><p>Mechanism for handling behaviours</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Bitwise.html">Bitwise</a> </div> <div class="summary-synopsis"><p>A set of macros that perform calculations on bits</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Calendar.html">Calendar</a> </div> <div class="summary-synopsis"><p>This module defines the responsibilities for working with calendars, dates, times and datetimes in Elixir</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Calendar.ISO.html">Calendar.ISO</a> </div> <div class="summary-synopsis"><p>A calendar implementation that follows to ISO 8601</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Code.html">Code</a> </div> <div class="summary-synopsis"><p>Utilities for managing code compilation, code evaluation, and code loading</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Collectable.html">Collectable</a> </div> <div class="summary-synopsis"><p>A protocol to traverse data structures</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Date.html">Date</a> </div> <div class="summary-synopsis"><p>A Date struct and functions</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Date.Range.html">Date.Range</a> </div> <div class="summary-synopsis"><p>Returns an inclusive range between dates</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="DateTime.html">DateTime</a> </div> <div class="summary-synopsis"><p>A datetime implementation with a time zone</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Dict.html">Dict</a> <span class="deprecated" title="Use Map or Keyword modules instead">deprecated</span> </div> <div class="summary-synopsis"><p>Generic API for dictionaries</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="DynamicSupervisor.html">DynamicSupervisor</a> </div> <div class="summary-synopsis"><p>A supervisor that starts children dynamically</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Enum.html">Enum</a> </div> <div class="summary-synopsis"><p>Provides a set of algorithms to work with enumerables</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Enumerable.html">Enumerable</a> </div> <div class="summary-synopsis"><p>Enumerable protocol used by <a href="Enum.html"><code class="inline">Enum</code></a> and <a href="Stream.html"><code class="inline">Stream</code></a> modules</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Exception.html">Exception</a> </div> <div class="summary-synopsis"><p>Functions to format throw/catch/exit and exceptions</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="File.html">File</a> </div> <div class="summary-synopsis"><p>This module contains functions to manipulate files</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="File.Stat.html">File.Stat</a> </div> <div class="summary-synopsis"><p>A struct that holds file information</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="File.Stream.html">File.Stream</a> </div> <div class="summary-synopsis"><p>Defines a <a href="File.Stream.html#content"><code class="inline">File.Stream</code></a> struct returned by <a href="File.html#stream!/3"><code class="inline">File.stream!/3</code></a></p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Float.html">Float</a> </div> <div class="summary-synopsis"><p>Functions for working with floating-point numbers</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Function.html">Function</a> </div> <div class="summary-synopsis"><p>A set of functions for working with functions</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="GenEvent.html">GenEvent</a> <span class="deprecated" title="Use Erlang/OTP's :gen_event module instead">deprecated</span> </div> <div class="summary-synopsis"><p>A event manager with event handlers behaviour</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="GenServer.html">GenServer</a> </div> <div class="summary-synopsis"><p>A behaviour module for implementing the server of a client-server relation</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="HashDict.html">HashDict</a> <span class="deprecated" title="Use Map instead">deprecated</span> </div> <div class="summary-synopsis"><p>Tuple-based HashDict implementation</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="HashSet.html">HashSet</a> <span class="deprecated" title="Use MapSet instead">deprecated</span> </div> <div class="summary-synopsis"><p>Tuple-based HashSet implementation</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="IO.html">IO</a> </div> <div class="summary-synopsis"><p>Functions handling input/output (IO)</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="IO.ANSI.html">IO.ANSI</a> </div> <div class="summary-synopsis"><p>Functionality to render ANSI escape sequences</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="IO.Stream.html">IO.Stream</a> </div> <div class="summary-synopsis"><p>Defines an <a href="IO.Stream.html#content"><code class="inline">IO.Stream</code></a> struct returned by <a href="IO.html#stream/2"><code class="inline">IO.stream/2</code></a> and <a href="IO.html#binstream/2"><code class="inline">IO.binstream/2</code></a></p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Inspect.html">Inspect</a> </div> <div class="summary-synopsis"><p>The <a href="Inspect.html#content"><code class="inline">Inspect</code></a> protocol converts an Elixir data structure into an algebra document</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Inspect.Algebra.html">Inspect.Algebra</a> </div> <div class="summary-synopsis"><p>A set of functions for creating and manipulating algebra documents</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Inspect.Opts.html">Inspect.Opts</a> </div> <div class="summary-synopsis"><p>Defines the Inspect.Opts used by the Inspect protocol</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Integer.html">Integer</a> </div> <div class="summary-synopsis"><p>Functions for working with integers</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Kernel.html">Kernel</a> </div> <div class="summary-synopsis"><p><a href="Kernel.html#content"><code class="inline">Kernel</code></a> is Elixir’s default environment</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Kernel.ParallelCompiler.html">Kernel.ParallelCompiler</a> </div> <div class="summary-synopsis"><p>A module responsible for compiling and requiring files in parallel</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Kernel.SpecialForms.html">Kernel.SpecialForms</a> </div> <div class="summary-synopsis"><p>Special forms are the basic building blocks of Elixir, and therefore cannot be overridden by the developer</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Keyword.html">Keyword</a> </div> <div class="summary-synopsis"><p>A set of functions for working with keywords</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="List.html">List</a> </div> <div class="summary-synopsis"><p>Functions that work on (linked) lists</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="List.Chars.html">List.Chars</a> </div> <div class="summary-synopsis"><p>The <a href="List.Chars.html#content"><code class="inline">List.Chars</code></a> protocol is responsible for converting a structure to a charlist (only if applicable)</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Macro.html">Macro</a> </div> <div class="summary-synopsis"><p>Conveniences for working with macros</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Macro.Env.html">Macro.Env</a> </div> <div class="summary-synopsis"><p>A struct that holds compile time environment information</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Map.html">Map</a> </div> <div class="summary-synopsis"><p>A set of functions for working with maps</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="MapSet.html">MapSet</a> </div> <div class="summary-synopsis"><p>Functions that work on sets</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Module.html">Module</a> </div> <div class="summary-synopsis"><p>Provides functions to deal with modules during compilation time</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="NaiveDateTime.html">NaiveDateTime</a> </div> <div class="summary-synopsis"><p>A NaiveDateTime struct (without a time zone) and functions</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Node.html">Node</a> </div> <div class="summary-synopsis"><p>Functions related to VM nodes</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="OptionParser.html">OptionParser</a> </div> <div class="summary-synopsis"><p>This module contains functions to parse command line options</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Path.html">Path</a> </div> <div class="summary-synopsis"><p>This module provides conveniences for manipulating or retrieving file system paths</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Port.html">Port</a> </div> <div class="summary-synopsis"><p>Functions for interacting with the external world through ports</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Process.html">Process</a> </div> <div class="summary-synopsis"><p>Conveniences for working with processes and the process dictionary</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Protocol.html">Protocol</a> </div> <div class="summary-synopsis"><p>Functions for working with protocols</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Range.html">Range</a> </div> <div class="summary-synopsis"><p>Defines a range</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Record.html">Record</a> </div> <div class="summary-synopsis"><p>Module to work with, define, and import records</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Regex.html">Regex</a> </div> <div class="summary-synopsis"><p>Provides regular expressions for Elixir</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Registry.html">Registry</a> </div> <div class="summary-synopsis"><p>A local, decentralized and scalable key-value process storage</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Set.html">Set</a> <span class="deprecated" title="Use MapSet instead">deprecated</span> </div> <div class="summary-synopsis"><p>Generic API for sets</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Stream.html">Stream</a> </div> <div class="summary-synopsis"><p>Functions for creating and composing streams</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="String.html">String</a> </div> <div class="summary-synopsis"><p>A String in Elixir is a UTF-8 encoded binary</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="String.Chars.html">String.Chars</a> </div> <div class="summary-synopsis"><p>The <a href="String.Chars.html#content"><code class="inline">String.Chars</code></a> protocol is responsible for converting a structure to a binary (only if applicable)</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="StringIO.html">StringIO</a> </div> <div class="summary-synopsis"><p>Controls an IO device process that wraps a string</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Supervisor.html">Supervisor</a> </div> <div class="summary-synopsis"><p>A behaviour module for implementing supervisors</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Supervisor.Spec.html">Supervisor.Spec</a> <span class="deprecated" title="Use the new child specifications outlined in the Supervisor module instead">deprecated</span> </div> <div class="summary-synopsis"><p>Outdated functions for building child specifications</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="System.html">System</a> </div> <div class="summary-synopsis"><p>The <a href="System.html#content"><code class="inline">System</code></a> module provides functions that interact directly with the VM or the host system</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Task.html">Task</a> </div> <div class="summary-synopsis"><p>Conveniences for spawning and awaiting tasks</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Task.Supervisor.html">Task.Supervisor</a> </div> <div class="summary-synopsis"><p>A task supervisor</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Time.html">Time</a> </div> <div class="summary-synopsis"><p>A Time struct and functions</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Tuple.html">Tuple</a> </div> <div class="summary-synopsis"><p>Functions for working with tuples</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="URI.html">URI</a> </div> <div class="summary-synopsis"><p>Utilities for working with URIs</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Version.html">Version</a> </div> <div class="summary-synopsis"><p>Functions for parsing and matching versions against requirements</p> </div> </div> </div> </section> <section class="details-list"> <h2 id="exceptions" class="section-heading"> <a href="#exceptions" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a> Exceptions </h2> <div class="summary"> <div class="summary-row"> <div class="summary-signature"> <a href="ArgumentError.html">ArgumentError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="ArithmeticError.html">ArithmeticError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="BadArityError.html">BadArityError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="BadBooleanError.html">BadBooleanError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="BadFunctionError.html">BadFunctionError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="BadMapError.html">BadMapError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="BadStructError.html">BadStructError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="CaseClauseError.html">CaseClauseError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Code.LoadError.html">Code.LoadError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="CompileError.html">CompileError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="CondClauseError.html">CondClauseError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Enum.EmptyError.html">Enum.EmptyError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Enum.OutOfBoundsError.html">Enum.OutOfBoundsError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="ErlangError.html">ErlangError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="File.CopyError.html">File.CopyError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="File.Error.html">File.Error</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="File.LinkError.html">File.LinkError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="FunctionClauseError.html">FunctionClauseError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="IO.StreamError.html">IO.StreamError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Inspect.Error.html">Inspect.Error</a> </div> <div class="summary-synopsis"><p>Raised when a struct cannot be inspected</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="KeyError.html">KeyError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="MatchError.html">MatchError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="OptionParser.ParseError.html">OptionParser.ParseError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Protocol.UndefinedError.html">Protocol.UndefinedError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Regex.CompileError.html">Regex.CompileError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="RuntimeError.html">RuntimeError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="SyntaxError.html">SyntaxError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="SystemLimitError.html">SystemLimitError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="TokenMissingError.html">TokenMissingError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="TryClauseError.html">TryClauseError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="UndefinedFunctionError.html">UndefinedFunctionError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="UnicodeConversionError.html">UnicodeConversionError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Version.InvalidRequirementError.html">Version.InvalidRequirementError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="Version.InvalidVersionError.html">Version.InvalidVersionError</a> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="WithClauseError.html">WithClauseError</a> </div> </div> </div> </section> <footer class="footer"> <p> <span class="line"> Built using <a href="https://github.com/elixir-lang/ex_doc" title="ExDoc" target="_blank" rel="help noopener">ExDoc</a> (v0.19.1), </span> <span class="line"> designed by <a href="https://twitter.com/dignifiedquire" target="_blank" rel="noopener" title="@dignifiedquire">Friedel Ziegelmayer</a>. </span> </p> </footer> </div> </div> </section> </div> <script src="dist/app-a0c90688fa.js"></script> </body> </html>