Sophie

Sophie

distrib > Mageia > 7 > i586 > by-pkgid > 016232f1d9a3f7bee85855d35a2bca58 > files > 73

elixir-doc-1.7.2-1.mga7.noarch.rpm

<!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>IO – Elixir v1.7.2</title>
    <link rel="stylesheet" href="dist/app-240d7fc7e5.css" />
      <link rel="canonical" href="https://hexdocs.pm/elixir/v1.7/IO.html" />
    <script src="dist/sidebar_items-cdf4e58b19.js"></script>
    
  </head>
  <body data-type="modules">
    <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>
IO        
          <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L1" title="View Source" class="view-source" rel="help">
            <span class="icon-code" aria-hidden="true"></span>
            <span class="sr-only">View Source</span>
          </a>
      </h1>


        <section id="moduledoc">
<p>Functions handling input/output (IO).</p>
<p>Many functions in this module expect an IO device as an argument.
An IO device must be a PID or an atom representing a process.
For convenience, Elixir provides <code class="inline">:stdio</code> and <code class="inline">:stderr</code> as
shortcuts to Erlang’s <code class="inline">:standard_io</code> and <code class="inline">:standard_error</code>.</p>
<p>The majority of the functions expect chardata, i.e. strings or
lists of characters and strings. In case another type is given,
functions will convert to string via the <a href="String.Chars.html"><code class="inline">String.Chars</code></a> protocol
(as shown in typespecs).</p>
<p>The functions starting with <code class="inline">bin</code> expect iodata as an argument,
i.e. binaries or lists of bytes and binaries.</p>
<h2 id="module-io-devices" class="section-heading">
  <a href="#module-io-devices" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  IO devices
</h2>

<p>An IO device may be an atom or a PID. In case it is an atom,
the atom must be the name of a registered process. In addition,
Elixir provides two shortcuts:</p>
<ul>
<li><p><code class="inline">:stdio</code> - a shortcut for <code class="inline">:standard_io</code>, which maps to
the current <a href="Process.html#group_leader/0"><code class="inline">Process.group_leader/0</code></a> in Erlang</p>
</li>
<li><p><code class="inline">:stderr</code> - a shortcut for the named process <code class="inline">:standard_error</code>
provided in Erlang</p>
</li>
</ul>
<p>IO devices maintain their position, which means subsequent calls to any
reading or writing functions will start from the place where the device
was last accessed. The position of files can be changed using the
<a href="http://www.erlang.org/doc/man/file.html#position-2"><code class="inline">:file.position/2</code></a> function.</p>
        </section>

        <section id="summary" class="details-list">
          <h1 class="section-heading">
            <a class="hover-link" href="#summary">
              <span class="icon-link" aria-hidden="true"></span>
              <span class="sr-only">Link to this section</span>
            </a>
            Summary
          </h1>
  <div class="summary-types summary">
    <h2>
      <a href="#types">Types</a>
    </h2>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#t:chardata/0">chardata()</a>
  </div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#t:device/0">device()</a>
  </div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#t:nodata/0">nodata()</a>
  </div>
</div>
  </div>
          
  <div class="summary-functions summary">
    <h2>
      <a href="#functions">Functions</a>
    </h2>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#binread/2">binread(device \\ :stdio, line_or_chars)</a>
  </div>
    <div class="summary-synopsis"><p>Reads from the IO <code class="inline">device</code>. The operation is Unicode unsafe</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#binstream/2">binstream(device, line_or_bytes)</a>
  </div>
    <div class="summary-synopsis"><p>Converts the IO <code class="inline">device</code> into an <a href="IO.Stream.html"><code class="inline">IO.Stream</code></a>. The operation is Unicode unsafe</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#binwrite/2">binwrite(device \\ :stdio, item)</a>
  </div>
    <div class="summary-synopsis"><p>Writes <code class="inline">item</code> as a binary to the given <code class="inline">device</code>.
No Unicode conversion happens.
The operation is Unicode unsafe</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#chardata_to_string/1">chardata_to_string(string)</a>
  </div>
    <div class="summary-synopsis"><p>Converts chardata (a list of integers representing codepoints,
lists and strings) into a string</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#getn/2">getn(prompt, count \\ 1)</a>
  </div>
    <div class="summary-synopsis"><p>Gets a number of bytes from IO device <code class="inline">:stdio</code></p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#getn/3">getn(device, prompt, count)</a>
  </div>
    <div class="summary-synopsis"><p>Gets a number of bytes from the IO <code class="inline">device</code></p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#gets/2">gets(device \\ :stdio, prompt)</a>
  </div>
    <div class="summary-synopsis"><p>Reads a line from the IO <code class="inline">device</code></p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#inspect/2">inspect(item, opts \\ [])</a>
  </div>
    <div class="summary-synopsis"><p>Inspects and writes the given <code class="inline">item</code> to the device</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#inspect/3">inspect(device, item, opts)</a>
  </div>
    <div class="summary-synopsis"><p>Inspects <code class="inline">item</code> according to the given options using the IO <code class="inline">device</code></p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#iodata_length/1">iodata_length(item)</a>
  </div>
    <div class="summary-synopsis"><p>Returns the size of an iodata</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#iodata_to_binary/1">iodata_to_binary(item)</a>
  </div>
    <div class="summary-synopsis"><p>Converts iodata (a list of integers representing bytes, lists
and binaries) into a binary.
The operation is Unicode unsafe</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#puts/2">puts(device \\ :stdio, item)</a>
  </div>
    <div class="summary-synopsis"><p>Writes <code class="inline">item</code> to the given <code class="inline">device</code>, similar to <a href="#write/2"><code class="inline">write/2</code></a>,
but adds a newline at the end</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#read/2">read(device \\ :stdio, line_or_chars)</a>
  </div>
    <div class="summary-synopsis"><p>Reads from the IO <code class="inline">device</code></p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#stream/2">stream(device, line_or_codepoints)</a>
  </div>
    <div class="summary-synopsis"><p>Converts the IO <code class="inline">device</code> into an <a href="IO.Stream.html"><code class="inline">IO.Stream</code></a></p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#warn/1">warn(message)</a>
  </div>
    <div class="summary-synopsis"><p>Writes a <code class="inline">message</code> to stderr, along with the current stacktrace</p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#warn/2">warn(message, stacktrace)</a>
  </div>
    <div class="summary-synopsis"><p>Writes a <code class="inline">message</code> to stderr, along with the given <code class="inline">stacktrace</code></p>
</div>
</div>
<div class="summary-row">
  <div class="summary-signature">
    <a href="#write/2">write(device \\ :stdio, item)</a>
  </div>
    <div class="summary-synopsis"><p>Writes <code class="inline">item</code> to the given <code class="inline">device</code></p>
</div>
</div>
  </div>
          
        </section>

        <section id="types" class="details-list">
          <h1 class="section-heading">
            <a class="hover-link" href="#types">
              <span class="icon-link" aria-hidden="true"></span>
              <span class="sr-only">Link to this section</span>
            </a>
            Types
          </h1>
          <div class="types-list">
<div class="detail" id="t:chardata/0">
    <div class="detail-header">
    <a href="#t:chardata/0" class="detail-link" title="Link to this type">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this type</span>
    </a>
    <span class="signature">chardata()</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L39" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>chardata() :: <a href="http://www.erlang.org/doc/man/unicode.html#type-chardata">:unicode.chardata</a>()</pre>
      </div>
  </div>
  <section class="docstring">
  </section>
</div>
<div class="detail" id="t:device/0">
    <div class="detail-header">
    <a href="#t:device/0" class="detail-link" title="Link to this type">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this type</span>
    </a>
    <span class="signature">device()</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L37" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>device() :: <a href="typespecs.html#basic-types">atom</a>() | <a href="typespecs.html#basic-types">pid</a>()</pre>
      </div>
  </div>
  <section class="docstring">
  </section>
</div>
<div class="detail" id="t:nodata/0">
    <div class="detail-header">
    <a href="#t:nodata/0" class="detail-link" title="Link to this type">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this type</span>
    </a>
    <span class="signature">nodata()</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L38" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>nodata() :: {:error, <a href="typespecs.html#built-in-types">term</a>()} | :eof</pre>
      </div>
  </div>
  <section class="docstring">
  </section>
</div>
          </div>
        </section>


        <section id="functions" class="details-list">
          <h1 class="section-heading">
            <a class="hover-link" href="#functions">
              <span class="icon-link" aria-hidden="true"></span>
              <span class="sr-only">Link to this section</span>
            </a>
            Functions
          </h1>
<div class="detail" id="binread/2">
  
    <span id="binread/1"></span>
  <div class="detail-header">
    <a href="#binread/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">binread(device \\ :stdio, line_or_chars)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L127" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>binread(<a href="#t:device/0">device</a>(), :all | :line | <a href="typespecs.html#basic-types">non_neg_integer</a>()) :: <a href="typespecs.html#built-in-types">iodata</a>() | <a href="#t:nodata/0">nodata</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Reads from the IO <code class="inline">device</code>. The operation is Unicode unsafe.</p>
<p>The <code class="inline">device</code> is iterated by the given number of bytes or line by line if
<code class="inline">:line</code> is given.
Alternatively, if <code class="inline">:all</code> is given, then whole <code class="inline">device</code> is returned.</p>
<p>It returns:</p>
<ul>
<li><p><code class="inline">data</code> - the output bytes</p>
</li>
<li><p><code class="inline">:eof</code> - end of file was encountered</p>
</li>
<li><p><code class="inline">{:error, reason}</code> - other (rare) error condition;
for instance, <code class="inline">{:error, :estale}</code> if reading from an
NFS volume</p>
</li>
</ul>
<p>If <code class="inline">:all</code> is given, <code class="inline">:eof</code> is never returned, but an
empty string in case the device has reached EOF.</p>
<p>Note: do not use this function on IO devices in Unicode mode
as it will return the wrong result.</p>
  </section>
</div>
<div class="detail" id="binstream/2">
    <div class="detail-header">
    <a href="#binstream/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">binstream(device, line_or_bytes)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L435" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>binstream(<a href="#t:device/0">device</a>(), :line | <a href="typespecs.html#basic-types">pos_integer</a>()) :: <a href="Enumerable.html#t:t/0">Enumerable.t</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Converts the IO <code class="inline">device</code> into an <a href="IO.Stream.html"><code class="inline">IO.Stream</code></a>. The operation is Unicode unsafe.</p>
<p>An <a href="IO.Stream.html"><code class="inline">IO.Stream</code></a> implements both <a href="Enumerable.html"><code class="inline">Enumerable</code></a> and
<a href="Collectable.html"><code class="inline">Collectable</code></a>, allowing it to be used for both read
and write.</p>
<p>The <code class="inline">device</code> is iterated by the given number of bytes or line by line if
<code class="inline">:line</code> is given.
This reads from the IO device as a raw binary.</p>
<p>Note that an IO stream has side effects and every time
you go over the stream you may get different results.</p>
<p>Finally, do not use this function on IO devices in Unicode
mode as it will return the wrong result.</p>
  </section>
</div>
<div class="detail" id="binwrite/2">
  
    <span id="binwrite/1"></span>
  <div class="detail-header">
    <a href="#binwrite/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">binwrite(device \\ :stdio, item)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L173" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>binwrite(<a href="#t:device/0">device</a>(), <a href="typespecs.html#built-in-types">iodata</a>()) :: :ok | {:error, <a href="typespecs.html#built-in-types">term</a>()}</pre>
      </div>
  </div>
  <section class="docstring">
<p>Writes <code class="inline">item</code> as a binary to the given <code class="inline">device</code>.
No Unicode conversion happens.
The operation is Unicode unsafe.</p>
<p>Check <a href="#write/2"><code class="inline">write/2</code></a> for more information.</p>
<p>Note: do not use this function on IO devices in Unicode mode
as it will return the wrong result.</p>
  </section>
</div>
<div class="detail" id="chardata_to_string/1">
    <div class="detail-header">
    <a href="#chardata_to_string/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">chardata_to_string(string)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L465" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>chardata_to_string(<a href="#t:chardata/0">chardata</a>()) :: <a href="String.html#t:t/0">String.t</a>() | <a href="typespecs.html#built-in-types">no_return</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Converts chardata (a list of integers representing codepoints,
lists and strings) into a string.</p>
<p>In case the conversion fails, it raises an <a href="UnicodeConversionError.html"><code class="inline">UnicodeConversionError</code></a>.
If a string is given, it returns the string itself.</p>
<h2 id="chardata_to_string/1-examples" class="section-heading">
  <a href="#chardata_to_string/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">IO</span><span class="o">.</span><span class="n">chardata_to_string</span><span class="p" data-group-id="1884665779-1">(</span><span class="p" data-group-id="1884665779-2">[</span><span class="mh">0x00E6</span><span class="p">,</span><span class="w"> </span><span class="mh">0x00DF</span><span class="p" data-group-id="1884665779-2">]</span><span class="p" data-group-id="1884665779-1">)</span><span class="w">
</span><span class="s">&quot;æß&quot;</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">IO</span><span class="o">.</span><span class="n">chardata_to_string</span><span class="p" data-group-id="1884665779-3">(</span><span class="p" data-group-id="1884665779-4">[</span><span class="mh">0x0061</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;bc&quot;</span><span class="p" data-group-id="1884665779-4">]</span><span class="p" data-group-id="1884665779-3">)</span><span class="w">
</span><span class="s">&quot;abc&quot;</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="nc">IO</span><span class="o">.</span><span class="n">chardata_to_string</span><span class="p" data-group-id="1884665779-5">(</span><span class="s">&quot;string&quot;</span><span class="p" data-group-id="1884665779-5">)</span><span class="w">
</span><span class="s">&quot;string&quot;</span></code></pre>
  </section>
</div>
<div class="detail" id="getn/2">
  
    <span id="getn/1"></span>
  <div class="detail-header">
    <a href="#getn/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">getn(prompt, count \\ 1)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L332" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>getn(<a href="#t:chardata/0">chardata</a>() | <a href="String.Chars.html#t:t/0">String.Chars.t</a>(), <a href="typespecs.html#basic-types">pos_integer</a>()) :: <a href="#t:chardata/0">chardata</a>() | <a href="#t:nodata/0">nodata</a>()</pre>
          <pre>getn(<a href="#t:device/0">device</a>(), <a href="#t:chardata/0">chardata</a>() | <a href="String.Chars.html#t:t/0">String.Chars.t</a>()) :: <a href="#t:chardata/0">chardata</a>() | <a href="#t:nodata/0">nodata</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Gets a number of bytes from IO device <code class="inline">:stdio</code>.</p>
<p>If <code class="inline">:stdio</code> is a Unicode device, <code class="inline">count</code> implies
the number of Unicode codepoints to be retrieved.
Otherwise, <code class="inline">count</code> is the number of raw bytes to be retrieved.</p>
<p>See <a href="IO.html#getn/3"><code class="inline">IO.getn/3</code></a> for a description of return values.</p>
  </section>
</div>
<div class="detail" id="getn/3">
    <div class="detail-header">
    <a href="#getn/3" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">getn(device, prompt, count)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L355" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>getn(<a href="#t:device/0">device</a>(), <a href="#t:chardata/0">chardata</a>() | <a href="String.Chars.html#t:t/0">String.Chars.t</a>(), <a href="typespecs.html#basic-types">pos_integer</a>()) ::
  <a href="#t:chardata/0">chardata</a>() | <a href="#t:nodata/0">nodata</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Gets a number of bytes from the IO <code class="inline">device</code>.</p>
<p>If the IO <code class="inline">device</code> is a Unicode device, <code class="inline">count</code> implies
the number of Unicode codepoints to be retrieved.
Otherwise, <code class="inline">count</code> is the number of raw bytes to be retrieved.</p>
<p>It returns:</p>
<ul>
<li><p><code class="inline">data</code> - the input characters</p>
</li>
<li><p><code class="inline">:eof</code> - end of file was encountered</p>
</li>
<li><p><code class="inline">{:error, reason}</code> - other (rare) error condition;
for instance, <code class="inline">{:error, :estale}</code> if reading from an
NFS volume</p>
</li>
</ul>
  </section>
</div>
<div class="detail" id="gets/2">
  
    <span id="gets/1"></span>
  <div class="detail-header">
    <a href="#gets/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">gets(device \\ :stdio, prompt)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L381" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>gets(<a href="#t:device/0">device</a>(), <a href="#t:chardata/0">chardata</a>() | <a href="String.Chars.html#t:t/0">String.Chars.t</a>()) :: <a href="#t:chardata/0">chardata</a>() | <a href="#t:nodata/0">nodata</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Reads a line from the IO <code class="inline">device</code>.</p>
<p>It returns:</p>
<ul>
<li><p><code class="inline">data</code> - the characters in the line terminated
by a line-feed (LF) or end of file (EOF)</p>
</li>
<li><p><code class="inline">:eof</code> - end of file was encountered</p>
</li>
<li><p><code class="inline">{:error, reason}</code> - other (rare) error condition;
for instance, <code class="inline">{:error, :estale}</code> if reading from an
NFS volume</p>
</li>
</ul>
<h2 id="gets/2-examples" class="section-heading">
  <a href="#gets/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<p>To display “What is your name?” as a prompt and await user input:</p>
<pre><code class="nohighlight makeup elixir"><span class="nc">IO</span><span class="o">.</span><span class="n">gets</span><span class="w"> </span><span class="s">&quot;What is your name?</span><span class="se">\n</span><span class="s">&quot;</span></code></pre>
  </section>
</div>
<div class="detail" id="inspect/2">
  
    <span id="inspect/1"></span>
  <div class="detail-header">
    <a href="#inspect/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">inspect(item, opts \\ [])</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L295" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>inspect(item, <a href="typespecs.html#built-in-types">keyword</a>()) :: item when item: var</pre>
      </div>
  </div>
  <section class="docstring">
<p>Inspects and writes the given <code class="inline">item</code> to the device.</p>
<p>It’s important to note that it returns the given <code class="inline">item</code> unchanged.
This makes it possible to “spy” on values by inserting an
<a href="IO.html#inspect/2"><code class="inline">IO.inspect/2</code></a> call almost anywhere in your code, for example,
in the middle of a pipeline.</p>
<p>It enables pretty printing by default with width of
80 characters. The width can be changed by explicitly
passing the <code class="inline">:width</code> option.</p>
<p>The output can be decorated with a label, by providing the <code class="inline">:label</code>
option to easily distinguish it from other <a href="IO.html#inspect/2"><code class="inline">IO.inspect/2</code></a> calls.
The label will be printed before the inspected <code class="inline">item</code>.</p>
<p>See <a href="Inspect.Opts.html"><code class="inline">Inspect.Opts</code></a> for a full list of remaining formatting options.</p>
<h2 id="inspect/2-examples" class="section-heading">
  <a href="#inspect/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="nc">IO</span><span class="o">.</span><span class="n">inspect</span><span class="w"> </span><span class="p" data-group-id="8219742263-1">&lt;&lt;</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p" data-group-id="8219742263-1">&gt;&gt;</span><span class="p">,</span><span class="w"> </span><span class="ss">width</span><span class="p">:</span><span class="w"> </span><span class="mi">40</span></code></pre>
<p>Prints:</p>
<pre><code class="nohighlight makeup elixir"><span class="p" data-group-id="7936658530-1">&lt;&lt;</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p" data-group-id="7936658530-1">&gt;&gt;</span></code></pre>
<p>We can use the <code class="inline">:label</code> option to decorate the output:</p>
<pre><code class="nohighlight makeup elixir"><span class="nc">IO</span><span class="o">.</span><span class="n">inspect</span><span class="w"> </span><span class="mi">1</span><span class="o">.</span><span class="o">.</span><span class="mi">100</span><span class="p">,</span><span class="w"> </span><span class="ss">label</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;a wonderful range&quot;</span></code></pre>
<p>Prints:</p>
<pre><code class="nohighlight makeup elixir"><span class="n">a</span><span class="w"> </span><span class="n">wonderful</span><span class="w"> </span><span class="ss">range</span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="o">.</span><span class="o">.</span><span class="mi">100</span></code></pre>
<p>The <code class="inline">:label</code> option is especially useful with pipelines:</p>
<pre><code class="nohighlight makeup elixir"><span class="p" data-group-id="2705836223-1">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p" data-group-id="2705836223-1">]</span><span class="w">
</span><span class="o">|&gt;</span><span class="w"> </span><span class="nc">IO</span><span class="o">.</span><span class="n">inspect</span><span class="p" data-group-id="2705836223-2">(</span><span class="ss">label</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;before&quot;</span><span class="p" data-group-id="2705836223-2">)</span><span class="w">
</span><span class="o">|&gt;</span><span class="w"> </span><span class="nc">Enum</span><span class="o">.</span><span class="n">map</span><span class="p" data-group-id="2705836223-3">(</span><span class="o">&amp;</span><span class="p" data-group-id="2705836223-4">(</span><span class="ni">&amp;1</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mi">2</span><span class="p" data-group-id="2705836223-4">)</span><span class="p" data-group-id="2705836223-3">)</span><span class="w">
</span><span class="o">|&gt;</span><span class="w"> </span><span class="nc">IO</span><span class="o">.</span><span class="n">inspect</span><span class="p" data-group-id="2705836223-5">(</span><span class="ss">label</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;after&quot;</span><span class="p" data-group-id="2705836223-5">)</span><span class="w">
</span><span class="o">|&gt;</span><span class="w"> </span><span class="nc">Enum</span><span class="o">.</span><span class="n">sum</span></code></pre>
<p>Prints:</p>
<pre><code class="nohighlight makeup elixir"><span class="ss">before</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="8587225189-1">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p" data-group-id="8587225189-1">]</span><span class="w">
</span><span class="ss">after</span><span class="p">:</span><span class="w"> </span><span class="p" data-group-id="8587225189-2">[</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p" data-group-id="8587225189-2">]</span></code></pre>
  </section>
</div>
<div class="detail" id="inspect/3">
    <div class="detail-header">
    <a href="#inspect/3" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">inspect(device, item, opts)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L305" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>inspect(<a href="#t:device/0">device</a>(), item, <a href="typespecs.html#built-in-types">keyword</a>()) :: item when item: var</pre>
      </div>
  </div>
  <section class="docstring">
<p>Inspects <code class="inline">item</code> according to the given options using the IO <code class="inline">device</code>.</p>
<p>See <a href="#inspect/2"><code class="inline">inspect/2</code></a> for a full list of options.</p>
  </section>
</div>
<div class="detail" id="iodata_length/1">
    <div class="detail-header">
    <a href="#iodata_length/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">iodata_length(item)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L513" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>iodata_length(<a href="typespecs.html#built-in-types">iodata</a>()) :: <a href="typespecs.html#basic-types">non_neg_integer</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Returns the size of an iodata.</p>
<p>Inlined by the compiler.</p>
<h2 id="iodata_length/1-examples" class="section-heading">
  <a href="#iodata_length/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="nc">IO</span><span class="o">.</span><span class="n">iodata_length</span><span class="p" data-group-id="2511581144-1">(</span><span class="p" data-group-id="2511581144-2">[</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="p" data-group-id="2511581144-3">&lt;&lt;</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p" data-group-id="2511581144-3">&gt;&gt;</span><span class="p" data-group-id="2511581144-2">]</span><span class="p" data-group-id="2511581144-1">)</span><span class="w">
</span><span class="mi">4</span></code></pre>
  </section>
</div>
<div class="detail" id="iodata_to_binary/1">
    <div class="detail-header">
    <a href="#iodata_to_binary/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">iodata_to_binary(item)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L497" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>iodata_to_binary(<a href="typespecs.html#built-in-types">iodata</a>()) :: <a href="typespecs.html#built-in-types">binary</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Converts iodata (a list of integers representing bytes, lists
and binaries) into a binary.
The operation is Unicode unsafe.</p>
<p>Notice that this function treats lists of integers as raw bytes
and does not perform any kind of encoding conversion. If you want
to convert from a charlist to a string (UTF-8 encoded), please
use <a href="#chardata_to_string/1"><code class="inline">chardata_to_string/1</code></a> instead.</p>
<p>If this function receives a binary, the same binary is returned.</p>
<p>Inlined by the compiler.</p>
<h2 id="iodata_to_binary/1-examples" class="section-heading">
  <a href="#iodata_to_binary/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex&gt; </span><span class="n">bin1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p" data-group-id="8232491518-1">&lt;&lt;</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p" data-group-id="8232491518-1">&gt;&gt;</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="n">bin2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p" data-group-id="8232491518-2">&lt;&lt;</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p" data-group-id="8232491518-2">&gt;&gt;</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="n">bin3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p" data-group-id="8232491518-3">&lt;&lt;</span><span class="mi">6</span><span class="p" data-group-id="8232491518-3">&gt;&gt;</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">IO</span><span class="o">.</span><span class="n">iodata_to_binary</span><span class="p" data-group-id="8232491518-4">(</span><span class="p" data-group-id="8232491518-5">[</span><span class="n">bin1</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="8232491518-6">[</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="n">bin2</span><span class="p" data-group-id="8232491518-6">]</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">bin3</span><span class="p" data-group-id="8232491518-5">]</span><span class="p" data-group-id="8232491518-4">)</span><span class="w">
</span><span class="p" data-group-id="8232491518-7">&lt;&lt;</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p" data-group-id="8232491518-7">&gt;&gt;</span><span class="w">

</span><span class="gp unselectable">iex&gt; </span><span class="n">bin</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p" data-group-id="8232491518-8">&lt;&lt;</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p" data-group-id="8232491518-8">&gt;&gt;</span><span class="w">
</span><span class="gp unselectable">iex&gt; </span><span class="nc">IO</span><span class="o">.</span><span class="n">iodata_to_binary</span><span class="p" data-group-id="8232491518-9">(</span><span class="n">bin</span><span class="p" data-group-id="8232491518-9">)</span><span class="w">
</span><span class="p" data-group-id="8232491518-10">&lt;&lt;</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p" data-group-id="8232491518-10">&gt;&gt;</span></code></pre>
  </section>
</div>
<div class="detail" id="puts/2">
  
    <span id="puts/1"></span>
  <div class="detail-header">
    <a href="#puts/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">puts(device \\ :stdio, item)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L194" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>puts(<a href="#t:device/0">device</a>(), <a href="#t:chardata/0">chardata</a>() | <a href="String.Chars.html#t:t/0">String.Chars.t</a>()) :: :ok</pre>
      </div>
  </div>
  <section class="docstring">
<p>Writes <code class="inline">item</code> to the given <code class="inline">device</code>, similar to <a href="#write/2"><code class="inline">write/2</code></a>,
but adds a newline at the end.</p>
<p>By default, the <code class="inline">device</code> is the standard output. It returns <code class="inline">:ok</code>
if it succeeds.</p>
<h2 id="puts/2-examples" class="section-heading">
  <a href="#puts/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="nc">IO</span><span class="o">.</span><span class="n">puts</span><span class="w"> </span><span class="s">&quot;Hello World!&quot;</span><span class="w">
</span><span class="c1">#=&gt; Hello World!</span><span class="w">

</span><span class="nc">IO</span><span class="o">.</span><span class="n">puts</span><span class="w"> </span><span class="ss">:stderr</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;error&quot;</span><span class="w">
</span><span class="c1">#=&gt; error</span></code></pre>
  </section>
</div>
<div class="detail" id="read/2">
  
    <span id="read/1"></span>
  <div class="detail-header">
    <a href="#read/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">read(device \\ :stdio, line_or_chars)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L78" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>read(<a href="#t:device/0">device</a>(), :all | :line | <a href="typespecs.html#basic-types">non_neg_integer</a>()) :: <a href="#t:chardata/0">chardata</a>() | <a href="#t:nodata/0">nodata</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Reads from the IO <code class="inline">device</code>.</p>
<p>The <code class="inline">device</code> is iterated by the given number of characters or line by line if
<code class="inline">:line</code> is given.
Alternatively, if <code class="inline">:all</code> is given, then whole <code class="inline">device</code> is returned.</p>
<p>It returns:</p>
<ul>
<li><p><code class="inline">data</code> - the output characters</p>
</li>
<li><p><code class="inline">:eof</code> - end of file was encountered</p>
</li>
<li><p><code class="inline">{:error, reason}</code> - other (rare) error condition;
for instance, <code class="inline">{:error, :estale}</code> if reading from an
NFS volume</p>
</li>
</ul>
<p>If <code class="inline">:all</code> is given, <code class="inline">:eof</code> is never returned, but an
empty string in case the device has reached EOF.</p>
  </section>
</div>
<div class="detail" id="stream/2">
    <div class="detail-header">
    <a href="#stream/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">stream(device, line_or_codepoints)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L410" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>stream(<a href="#t:device/0">device</a>(), :line | <a href="typespecs.html#basic-types">pos_integer</a>()) :: <a href="Enumerable.html#t:t/0">Enumerable.t</a>()</pre>
      </div>
  </div>
  <section class="docstring">
<p>Converts the IO <code class="inline">device</code> into an <a href="IO.Stream.html"><code class="inline">IO.Stream</code></a>.</p>
<p>An <a href="IO.Stream.html"><code class="inline">IO.Stream</code></a> implements both <a href="Enumerable.html"><code class="inline">Enumerable</code></a> and
<a href="Collectable.html"><code class="inline">Collectable</code></a>, allowing it to be used for both read
and write.</p>
<p>The <code class="inline">device</code> is iterated by the given number of characters or line by line if
<code class="inline">:line</code> is given.</p>
<p>This reads from the IO as UTF-8. Check out
<a href="IO.html#binstream/2"><code class="inline">IO.binstream/2</code></a> to handle the IO as a raw binary.</p>
<p>Note that an IO stream has side effects and every time
you go over the stream you may get different results.</p>
<h2 id="stream/2-examples" class="section-heading">
  <a href="#stream/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<p>Here is an example on how we mimic an echo server
from the command line:</p>
<pre><code class="nohighlight makeup elixir"><span class="nc">Enum</span><span class="o">.</span><span class="n">each</span><span class="w"> </span><span class="nc">IO</span><span class="o">.</span><span class="n">stream</span><span class="p" data-group-id="0544180369-1">(</span><span class="ss">:stdio</span><span class="p">,</span><span class="w"> </span><span class="ss">:line</span><span class="p" data-group-id="0544180369-1">)</span><span class="p">,</span><span class="w"> </span><span class="o">&amp;</span><span class="nc">IO</span><span class="o">.</span><span class="n">write</span><span class="p" data-group-id="0544180369-2">(</span><span class="ni">&amp;1</span><span class="p" data-group-id="0544180369-2">)</span></code></pre>
  </section>
</div>
<div class="detail" id="warn/1">
    <div class="detail-header">
    <a href="#warn/1" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">warn(message)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L241" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>warn(<a href="#t:chardata/0">chardata</a>() | <a href="String.Chars.html#t:t/0">String.Chars.t</a>()) :: :ok</pre>
      </div>
  </div>
  <section class="docstring">
<p>Writes a <code class="inline">message</code> to stderr, along with the current stacktrace.</p>
<p>It returns <code class="inline">:ok</code> if it succeeds.</p>
<h2 id="warn/1-examples" class="section-heading">
  <a href="#warn/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="nc">IO</span><span class="o">.</span><span class="n">warn</span><span class="w"> </span><span class="s">&quot;variable bar is unused&quot;</span><span class="w">
</span><span class="c1">#=&gt; warning: variable bar is unused</span><span class="w">
</span><span class="c1">#=&gt;   (iex) evaluator.ex:108: IEx.Evaluator.eval/4</span></code></pre>
  </section>
</div>
<div class="detail" id="warn/2">
    <div class="detail-header">
    <a href="#warn/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">warn(message, stacktrace)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L220" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>warn(<a href="#t:chardata/0">chardata</a>() | <a href="String.Chars.html#t:t/0">String.Chars.t</a>(), <a href="Exception.html#t:stacktrace/0">Exception.stacktrace</a>()) :: :ok</pre>
      </div>
  </div>
  <section class="docstring">
<p>Writes a <code class="inline">message</code> to stderr, along with the given <code class="inline">stacktrace</code>.</p>
<p>This function also notifies the compiler a warning was printed
(in case —warnings-as-errors was enabled). It returns <code class="inline">:ok</code>
if it succeeds.</p>
<p>An empty list can be passed to avoid stacktrace printing.</p>
<h2 id="warn/2-examples" class="section-heading">
  <a href="#warn/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="n">stacktrace</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p" data-group-id="7075902371-1">[</span><span class="p" data-group-id="7075902371-2">{</span><span class="nc">MyApp</span><span class="p">,</span><span class="w"> </span><span class="ss">:main</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="7075902371-3">[</span><span class="ss">file</span><span class="p">:</span><span class="w"> </span><span class="sc">&#39;my_app.ex&#39;</span><span class="p">,</span><span class="w"> </span><span class="ss">line</span><span class="p">:</span><span class="w"> </span><span class="mi">4</span><span class="p" data-group-id="7075902371-3">]</span><span class="p" data-group-id="7075902371-2">}</span><span class="p" data-group-id="7075902371-1">]</span><span class="w">
</span><span class="nc">IO</span><span class="o">.</span><span class="n">warn</span><span class="w"> </span><span class="s">&quot;variable bar is unused&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">stacktrace</span><span class="w">
</span><span class="c1">#=&gt; warning: variable bar is unused</span><span class="w">
</span><span class="c1">#=&gt;   my_app.ex:4: MyApp.main/1</span></code></pre>
  </section>
</div>
<div class="detail" id="write/2">
  
    <span id="write/1"></span>
  <div class="detail-header">
    <a href="#write/2" class="detail-link" title="Link to this function">
      <span class="icon-link" aria-hidden="true"></span>
      <span class="sr-only">Link to this function</span>
    </a>
    <span class="signature">write(device \\ :stdio, item)</span>
      <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/io.ex#L158" class="view-source" rel="help" title="View Source">
       <span class="icon-code" aria-hidden="true"></span>
       <span class="sr-only">View Source</span>
     </a>
        
      <div class="specs">
          <pre>write(<a href="#t:device/0">device</a>(), <a href="#t:chardata/0">chardata</a>() | <a href="String.Chars.html#t:t/0">String.Chars.t</a>()) :: :ok</pre>
      </div>
  </div>
  <section class="docstring">
<p>Writes <code class="inline">item</code> to the given <code class="inline">device</code>.</p>
<p>By default, the <code class="inline">device</code> is the standard output.</p>
<h2 id="write/2-examples" class="section-heading">
  <a href="#write/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
  Examples
</h2>

<pre><code class="nohighlight makeup elixir"><span class="nc">IO</span><span class="o">.</span><span class="n">write</span><span class="w"> </span><span class="s">&quot;sample&quot;</span><span class="w">
</span><span class="c1">#=&gt; sample</span><span class="w">

</span><span class="nc">IO</span><span class="o">.</span><span class="n">write</span><span class="w"> </span><span class="ss">:stderr</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;error&quot;</span><span class="w">
</span><span class="c1">#=&gt; error</span></code></pre>
  </section>
</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>