Sophie

Sophie

distrib > Mageia > 7 > aarch64 > by-pkgid > ca236e080672a3aa5beda2fe21b8473d > files > 1006

erlang-doc-21.2.5-1.mga7.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html xmlns:erl="http://erlang.org" xmlns:fn="http://www.w3.org/2005/02/xpath-functions">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="../../../../doc/otp_doc.css" type="text/css">
<title>Erlang -- ms_transform</title>
</head>
<body>
<div id="container">
<script id="js" type="text/javascript" language="JavaScript" src="../../../../doc/js/flipmenu/flipmenu.js"></script><script id="js2" type="text/javascript" src="../../../../doc/js/erlresolvelinks.js"></script><script language="JavaScript" type="text/javascript">
            <!--
              function getWinHeight() {
                var myHeight = 0;
                if( typeof( window.innerHeight ) == 'number' ) {
                  //Non-IE
                  myHeight = window.innerHeight;
                } else if( document.documentElement && ( document.documentElement.clientWidth ||
                                                         document.documentElement.clientHeight ) ) {
                  //IE 6+ in 'standards compliant mode'
                  myHeight = document.documentElement.clientHeight;
                } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
                  //IE 4 compatible
                  myHeight = document.body.clientHeight;
                }
                return myHeight;
              }

              function setscrollpos() {
                var objf=document.getElementById('loadscrollpos');
                 document.getElementById("leftnav").scrollTop = objf.offsetTop - getWinHeight()/2;
              }

              function addEvent(obj, evType, fn){
                if (obj.addEventListener){
                obj.addEventListener(evType, fn, true);
                return true;
              } else if (obj.attachEvent){
                var r = obj.attachEvent("on"+evType, fn);
                return r;
              } else {
                return false;
              }
             }

             addEvent(window, 'load', setscrollpos);

             //--></script><div id="leftnav"><div class="innertube">
<div class="erlang-logo-wrapper"><a href="../../../../doc/index.html"><img alt="Erlang Logo" src="../../../../doc/erlang-logo.png" class="erlang-logo"></a></div>
<p class="section-title">STDLIB</p>
<p class="section-subtitle">Reference Manual</p>
<p class="section-version">Version 3.7</p>
<ul class="panel-sections">
<li><a href="users_guide.html">User's Guide</a></li>
<li><a href="index.html">Reference Manual</a></li>
<li><a href="release_notes.html">Release Notes</a></li>
<li><a href="../pdf/stdlib-3.7.pdf">PDF</a></li>
<li><a href="../../../../doc/index.html">Top</a></li>
</ul>
<ul class="expand-collapse-items">
<li><a href="javascript:openAllFlips()">Expand All</a></li>
<li><a href="javascript:closeAllFlips()">Contract All</a></li>
</ul>
<h3>Table of Contents</h3>
<ul class="flipMenu">
<li title="STDLIB (App)"><a href="STDLIB_app.html">STDLIB (App)
                </a></li>
<li id="no" title="array " expanded="false">array<ul>
<li><a href="array.html">
                  Top of manual page
                </a></li>
    <li title="default-1"><a href="array.html#default-1">default/1</a></li>
    <li title="fix-1"><a href="array.html#fix-1">fix/1</a></li>
    <li title="foldl-3"><a href="array.html#foldl-3">foldl/3</a></li>
    <li title="foldr-3"><a href="array.html#foldr-3">foldr/3</a></li>
    <li title="from_list-1"><a href="array.html#from_list-1">from_list/1</a></li>
    <li title="from_list-2"><a href="array.html#from_list-2">from_list/2</a></li>
    <li title="from_orddict-1"><a href="array.html#from_orddict-1">from_orddict/1</a></li>
    <li title="from_orddict-2"><a href="array.html#from_orddict-2">from_orddict/2</a></li>
    <li title="get-2"><a href="array.html#get-2">get/2</a></li>
    <li title="is_array-1"><a href="array.html#is_array-1">is_array/1</a></li>
    <li title="is_fix-1"><a href="array.html#is_fix-1">is_fix/1</a></li>
    <li title="map-2"><a href="array.html#map-2">map/2</a></li>
    <li title="new-0"><a href="array.html#new-0">new/0</a></li>
    <li title="new-1"><a href="array.html#new-1">new/1</a></li>
    <li title="new-2"><a href="array.html#new-2">new/2</a></li>
    <li title="relax-1"><a href="array.html#relax-1">relax/1</a></li>
    <li title="reset-2"><a href="array.html#reset-2">reset/2</a></li>
    <li title="resize-1"><a href="array.html#resize-1">resize/1</a></li>
    <li title="resize-2"><a href="array.html#resize-2">resize/2</a></li>
    <li title="set-3"><a href="array.html#set-3">set/3</a></li>
    <li title="size-1"><a href="array.html#size-1">size/1</a></li>
    <li title="sparse_foldl-3"><a href="array.html#sparse_foldl-3">sparse_foldl/3</a></li>
    <li title="sparse_foldr-3"><a href="array.html#sparse_foldr-3">sparse_foldr/3</a></li>
    <li title="sparse_map-2"><a href="array.html#sparse_map-2">sparse_map/2</a></li>
    <li title="sparse_size-1"><a href="array.html#sparse_size-1">sparse_size/1</a></li>
    <li title="sparse_to_list-1"><a href="array.html#sparse_to_list-1">sparse_to_list/1</a></li>
    <li title="sparse_to_orddict-1"><a href="array.html#sparse_to_orddict-1">sparse_to_orddict/1</a></li>
    <li title="to_list-1"><a href="array.html#to_list-1">to_list/1</a></li>
    <li title="to_orddict-1"><a href="array.html#to_orddict-1">to_orddict/1</a></li>
    </ul>
</li>
<li title="assert.hrl"><a href="assert.hrl.html">assert.hrl</a></li>
<li id="no" title="base64 " expanded="false">base64<ul>
<li><a href="base64.html">
                  Top of manual page
                </a></li>
    <li title="decode-1"><a href="base64.html#decode-1">decode/1</a></li>
    <li title="decode_to_string-1"><a href="base64.html#decode_to_string-1">decode_to_string/1</a></li>
    <li title="encode-1"><a href="base64.html#encode-1">encode/1</a></li>
    <li title="encode_to_string-1"><a href="base64.html#encode_to_string-1">encode_to_string/1</a></li>
    <li title="mime_decode-1"><a href="base64.html#mime_decode-1">mime_decode/1</a></li>
    <li title="mime_decode_to_string-1"><a href="base64.html#mime_decode_to_string-1">mime_decode_to_string/1</a></li>
    </ul>
</li>
<li id="no" title="beam_lib " expanded="false">beam_lib<ul>
<li><a href="beam_lib.html">
                  Top of manual page
                </a></li>
    <li title="all_chunks-1"><a href="beam_lib.html#all_chunks-1">all_chunks/1</a></li>
    <li title="build_module-1"><a href="beam_lib.html#build_module-1">build_module/1</a></li>
    <li title="chunks-2"><a href="beam_lib.html#chunks-2">chunks/2</a></li>
    <li title="chunks-3"><a href="beam_lib.html#chunks-3">chunks/3</a></li>
    <li title="clear_crypto_key_fun-0"><a href="beam_lib.html#clear_crypto_key_fun-0">clear_crypto_key_fun/0</a></li>
    <li title="cmp-2"><a href="beam_lib.html#cmp-2">cmp/2</a></li>
    <li title="cmp_dirs-2"><a href="beam_lib.html#cmp_dirs-2">cmp_dirs/2</a></li>
    <li title="crypto_key_fun-1"><a href="beam_lib.html#crypto_key_fun-1">crypto_key_fun/1</a></li>
    <li title="diff_dirs-2"><a href="beam_lib.html#diff_dirs-2">diff_dirs/2</a></li>
    <li title="format_error-1"><a href="beam_lib.html#format_error-1">format_error/1</a></li>
    <li title="info-1"><a href="beam_lib.html#info-1">info/1</a></li>
    <li title="md5-1"><a href="beam_lib.html#md5-1">md5/1</a></li>
    <li title="strip-1"><a href="beam_lib.html#strip-1">strip/1</a></li>
    <li title="strip_files-1"><a href="beam_lib.html#strip_files-1">strip_files/1</a></li>
    <li title="strip_release-1"><a href="beam_lib.html#strip_release-1">strip_release/1</a></li>
    <li title="version-1"><a href="beam_lib.html#version-1">version/1</a></li>
    </ul>
</li>
<li id="no" title="binary " expanded="false">binary<ul>
<li><a href="binary.html">
                  Top of manual page
                </a></li>
    <li title="at-2"><a href="binary.html#at-2">at/2</a></li>
    <li title="bin_to_list-1"><a href="binary.html#bin_to_list-1">bin_to_list/1</a></li>
    <li title="bin_to_list-2"><a href="binary.html#bin_to_list-2">bin_to_list/2</a></li>
    <li title="bin_to_list-3"><a href="binary.html#bin_to_list-3">bin_to_list/3</a></li>
    <li title="compile_pattern-1"><a href="binary.html#compile_pattern-1">compile_pattern/1</a></li>
    <li title="copy-1"><a href="binary.html#copy-1">copy/1</a></li>
    <li title="copy-2"><a href="binary.html#copy-2">copy/2</a></li>
    <li title="decode_unsigned-1"><a href="binary.html#decode_unsigned-1">decode_unsigned/1</a></li>
    <li title="decode_unsigned-2"><a href="binary.html#decode_unsigned-2">decode_unsigned/2</a></li>
    <li title="encode_unsigned-1"><a href="binary.html#encode_unsigned-1">encode_unsigned/1</a></li>
    <li title="encode_unsigned-2"><a href="binary.html#encode_unsigned-2">encode_unsigned/2</a></li>
    <li title="first-1"><a href="binary.html#first-1">first/1</a></li>
    <li title="last-1"><a href="binary.html#last-1">last/1</a></li>
    <li title="list_to_bin-1"><a href="binary.html#list_to_bin-1">list_to_bin/1</a></li>
    <li title="longest_common_prefix-1"><a href="binary.html#longest_common_prefix-1">longest_common_prefix/1</a></li>
    <li title="longest_common_suffix-1"><a href="binary.html#longest_common_suffix-1">longest_common_suffix/1</a></li>
    <li title="match-2"><a href="binary.html#match-2">match/2</a></li>
    <li title="match-3"><a href="binary.html#match-3">match/3</a></li>
    <li title="matches-2"><a href="binary.html#matches-2">matches/2</a></li>
    <li title="matches-3"><a href="binary.html#matches-3">matches/3</a></li>
    <li title="part-2"><a href="binary.html#part-2">part/2</a></li>
    <li title="part-3"><a href="binary.html#part-3">part/3</a></li>
    <li title="referenced_byte_size-1"><a href="binary.html#referenced_byte_size-1">referenced_byte_size/1</a></li>
    <li title="replace-3"><a href="binary.html#replace-3">replace/3</a></li>
    <li title="replace-4"><a href="binary.html#replace-4">replace/4</a></li>
    <li title="split-2"><a href="binary.html#split-2">split/2</a></li>
    <li title="split-3"><a href="binary.html#split-3">split/3</a></li>
    </ul>
</li>
<li id="no" title="c " expanded="false">c<ul>
<li><a href="c.html">
                  Top of manual page
                </a></li>
    <li title="bt-1"><a href="c.html#bt-1">bt/1</a></li>
    <li title="c-1"><a href="c.html#c-1">c/1</a></li>
    <li title="c-2"><a href="c.html#c-2">c/2</a></li>
    <li title="c-3"><a href="c.html#c-3">c/3</a></li>
    <li title="cd-1"><a href="c.html#cd-1">cd/1</a></li>
    <li title="erlangrc-1"><a href="c.html#erlangrc-1">erlangrc/1</a></li>
    <li title="flush-0"><a href="c.html#flush-0">flush/0</a></li>
    <li title="help-0"><a href="c.html#help-0">help/0</a></li>
    <li title="i-0"><a href="c.html#i-0">i/0</a></li>
    <li title="i-3"><a href="c.html#i-3">i/3</a></li>
    <li title="l-1"><a href="c.html#l-1">l/1</a></li>
    <li title="lc-1"><a href="c.html#lc-1">lc/1</a></li>
    <li title="lm-0"><a href="c.html#lm-0">lm/0</a></li>
    <li title="ls-0"><a href="c.html#ls-0">ls/0</a></li>
    <li title="ls-1"><a href="c.html#ls-1">ls/1</a></li>
    <li title="m-0"><a href="c.html#m-0">m/0</a></li>
    <li title="m-1"><a href="c.html#m-1">m/1</a></li>
    <li title="memory-0"><a href="c.html#memory-0">memory/0</a></li>
    <li title="memory-1"><a href="c.html#memory-1">memory/1</a></li>
    <li title="mm-0"><a href="c.html#mm-0">mm/0</a></li>
    <li title="nc-1"><a href="c.html#nc-1">nc/1</a></li>
    <li title="nc-2"><a href="c.html#nc-2">nc/2</a></li>
    <li title="ni-0"><a href="c.html#ni-0">ni/0</a></li>
    <li title="nl-1"><a href="c.html#nl-1">nl/1</a></li>
    <li title="nregs-0"><a href="c.html#nregs-0">nregs/0</a></li>
    <li title="pid-3"><a href="c.html#pid-3">pid/3</a></li>
    <li title="pwd-0"><a href="c.html#pwd-0">pwd/0</a></li>
    <li title="q-0"><a href="c.html#q-0">q/0</a></li>
    <li title="regs-0"><a href="c.html#regs-0">regs/0</a></li>
    <li title="uptime-0"><a href="c.html#uptime-0">uptime/0</a></li>
    <li title="xm-1"><a href="c.html#xm-1">xm/1</a></li>
    <li title="y-1"><a href="c.html#y-1">y/1</a></li>
    <li title="y-2"><a href="c.html#y-2">y/2</a></li>
    </ul>
</li>
<li id="no" title="calendar " expanded="false">calendar<ul>
<li><a href="calendar.html">
                  Top of manual page
                </a></li>
    <li title="date_to_gregorian_days-1"><a href="calendar.html#date_to_gregorian_days-1">date_to_gregorian_days/1</a></li>
    <li title="date_to_gregorian_days-3"><a href="calendar.html#date_to_gregorian_days-3">date_to_gregorian_days/3</a></li>
    <li title="datetime_to_gregorian_seconds-1"><a href="calendar.html#datetime_to_gregorian_seconds-1">datetime_to_gregorian_seconds/1</a></li>
    <li title="day_of_the_week-1"><a href="calendar.html#day_of_the_week-1">day_of_the_week/1</a></li>
    <li title="day_of_the_week-3"><a href="calendar.html#day_of_the_week-3">day_of_the_week/3</a></li>
    <li title="gregorian_days_to_date-1"><a href="calendar.html#gregorian_days_to_date-1">gregorian_days_to_date/1</a></li>
    <li title="gregorian_seconds_to_datetime-1"><a href="calendar.html#gregorian_seconds_to_datetime-1">gregorian_seconds_to_datetime/1</a></li>
    <li title="is_leap_year-1"><a href="calendar.html#is_leap_year-1">is_leap_year/1</a></li>
    <li title="iso_week_number-0"><a href="calendar.html#iso_week_number-0">iso_week_number/0</a></li>
    <li title="iso_week_number-1"><a href="calendar.html#iso_week_number-1">iso_week_number/1</a></li>
    <li title="last_day_of_the_month-2"><a href="calendar.html#last_day_of_the_month-2">last_day_of_the_month/2</a></li>
    <li title="local_time-0"><a href="calendar.html#local_time-0">local_time/0</a></li>
    <li title="local_time_to_universal_time-1"><a href="calendar.html#local_time_to_universal_time-1">local_time_to_universal_time/1</a></li>
    <li title="local_time_to_universal_time_dst-1"><a href="calendar.html#local_time_to_universal_time_dst-1">local_time_to_universal_time_dst/1</a></li>
    <li title="now_to_datetime-1"><a href="calendar.html#now_to_datetime-1">now_to_datetime/1</a></li>
    <li title="now_to_local_time-1"><a href="calendar.html#now_to_local_time-1">now_to_local_time/1</a></li>
    <li title="now_to_universal_time-1"><a href="calendar.html#now_to_universal_time-1">now_to_universal_time/1</a></li>
    <li title="rfc3339_to_system_time-1"><a href="calendar.html#rfc3339_to_system_time-1">rfc3339_to_system_time/1</a></li>
    <li title="rfc3339_to_system_time-2"><a href="calendar.html#rfc3339_to_system_time-2">rfc3339_to_system_time/2</a></li>
    <li title="seconds_to_daystime-1"><a href="calendar.html#seconds_to_daystime-1">seconds_to_daystime/1</a></li>
    <li title="seconds_to_time-1"><a href="calendar.html#seconds_to_time-1">seconds_to_time/1</a></li>
    <li title="system_time_to_local_time-2"><a href="calendar.html#system_time_to_local_time-2">system_time_to_local_time/2</a></li>
    <li title="system_time_to_rfc3339-1"><a href="calendar.html#system_time_to_rfc3339-1">system_time_to_rfc3339/1</a></li>
    <li title="system_time_to_rfc3339-2"><a href="calendar.html#system_time_to_rfc3339-2">system_time_to_rfc3339/2</a></li>
    <li title="system_time_to_universal_time-2"><a href="calendar.html#system_time_to_universal_time-2">system_time_to_universal_time/2</a></li>
    <li title="time_difference-2"><a href="calendar.html#time_difference-2">time_difference/2</a></li>
    <li title="time_to_seconds-1"><a href="calendar.html#time_to_seconds-1">time_to_seconds/1</a></li>
    <li title="universal_time-0"><a href="calendar.html#universal_time-0">universal_time/0</a></li>
    <li title="universal_time_to_local_time-1"><a href="calendar.html#universal_time_to_local_time-1">universal_time_to_local_time/1</a></li>
    <li title="valid_date-1"><a href="calendar.html#valid_date-1">valid_date/1</a></li>
    <li title="valid_date-3"><a href="calendar.html#valid_date-3">valid_date/3</a></li>
    </ul>
</li>
<li id="no" title="dets " expanded="false">dets<ul>
<li><a href="dets.html">
                  Top of manual page
                </a></li>
    <li title="all-0"><a href="dets.html#all-0">all/0</a></li>
    <li title="bchunk-2"><a href="dets.html#bchunk-2">bchunk/2</a></li>
    <li title="close-1"><a href="dets.html#close-1">close/1</a></li>
    <li title="delete-2"><a href="dets.html#delete-2">delete/2</a></li>
    <li title="delete_all_objects-1"><a href="dets.html#delete_all_objects-1">delete_all_objects/1</a></li>
    <li title="delete_object-2"><a href="dets.html#delete_object-2">delete_object/2</a></li>
    <li title="first-1"><a href="dets.html#first-1">first/1</a></li>
    <li title="foldl-3"><a href="dets.html#foldl-3">foldl/3</a></li>
    <li title="foldr-3"><a href="dets.html#foldr-3">foldr/3</a></li>
    <li title="from_ets-2"><a href="dets.html#from_ets-2">from_ets/2</a></li>
    <li title="info-1"><a href="dets.html#info-1">info/1</a></li>
    <li title="info-2"><a href="dets.html#info-2">info/2</a></li>
    <li title="init_table-2"><a href="dets.html#init_table-2">init_table/2</a></li>
    <li title="init_table-3"><a href="dets.html#init_table-3">init_table/3</a></li>
    <li title="insert-2"><a href="dets.html#insert-2">insert/2</a></li>
    <li title="insert_new-2"><a href="dets.html#insert_new-2">insert_new/2</a></li>
    <li title="is_compatible_bchunk_format-2"><a href="dets.html#is_compatible_bchunk_format-2">is_compatible_bchunk_format/2</a></li>
    <li title="is_dets_file-1"><a href="dets.html#is_dets_file-1">is_dets_file/1</a></li>
    <li title="lookup-2"><a href="dets.html#lookup-2">lookup/2</a></li>
    <li title="match-1"><a href="dets.html#match-1">match/1</a></li>
    <li title="match-2"><a href="dets.html#match-2">match/2</a></li>
    <li title="match-3"><a href="dets.html#match-3">match/3</a></li>
    <li title="match_delete-2"><a href="dets.html#match_delete-2">match_delete/2</a></li>
    <li title="match_object-1"><a href="dets.html#match_object-1">match_object/1</a></li>
    <li title="match_object-2"><a href="dets.html#match_object-2">match_object/2</a></li>
    <li title="match_object-3"><a href="dets.html#match_object-3">match_object/3</a></li>
    <li title="member-2"><a href="dets.html#member-2">member/2</a></li>
    <li title="next-2"><a href="dets.html#next-2">next/2</a></li>
    <li title="open_file-1"><a href="dets.html#open_file-1">open_file/1</a></li>
    <li title="open_file-2"><a href="dets.html#open_file-2">open_file/2</a></li>
    <li title="pid2name-1"><a href="dets.html#pid2name-1">pid2name/1</a></li>
    <li title="repair_continuation-2"><a href="dets.html#repair_continuation-2">repair_continuation/2</a></li>
    <li title="safe_fixtable-2"><a href="dets.html#safe_fixtable-2">safe_fixtable/2</a></li>
    <li title="select-1"><a href="dets.html#select-1">select/1</a></li>
    <li title="select-2"><a href="dets.html#select-2">select/2</a></li>
    <li title="select-3"><a href="dets.html#select-3">select/3</a></li>
    <li title="select_delete-2"><a href="dets.html#select_delete-2">select_delete/2</a></li>
    <li title="slot-2"><a href="dets.html#slot-2">slot/2</a></li>
    <li title="sync-1"><a href="dets.html#sync-1">sync/1</a></li>
    <li title="table-1"><a href="dets.html#table-1">table/1</a></li>
    <li title="table-2"><a href="dets.html#table-2">table/2</a></li>
    <li title="to_ets-2"><a href="dets.html#to_ets-2">to_ets/2</a></li>
    <li title="traverse-2"><a href="dets.html#traverse-2">traverse/2</a></li>
    <li title="update_counter-3"><a href="dets.html#update_counter-3">update_counter/3</a></li>
    </ul>
</li>
<li id="no" title="dict " expanded="false">dict<ul>
<li><a href="dict.html">
                  Top of manual page
                </a></li>
    <li title="append-3"><a href="dict.html#append-3">append/3</a></li>
    <li title="append_list-3"><a href="dict.html#append_list-3">append_list/3</a></li>
    <li title="erase-2"><a href="dict.html#erase-2">erase/2</a></li>
    <li title="fetch-2"><a href="dict.html#fetch-2">fetch/2</a></li>
    <li title="fetch_keys-1"><a href="dict.html#fetch_keys-1">fetch_keys/1</a></li>
    <li title="filter-2"><a href="dict.html#filter-2">filter/2</a></li>
    <li title="find-2"><a href="dict.html#find-2">find/2</a></li>
    <li title="fold-3"><a href="dict.html#fold-3">fold/3</a></li>
    <li title="from_list-1"><a href="dict.html#from_list-1">from_list/1</a></li>
    <li title="is_empty-1"><a href="dict.html#is_empty-1">is_empty/1</a></li>
    <li title="is_key-2"><a href="dict.html#is_key-2">is_key/2</a></li>
    <li title="map-2"><a href="dict.html#map-2">map/2</a></li>
    <li title="merge-3"><a href="dict.html#merge-3">merge/3</a></li>
    <li title="new-0"><a href="dict.html#new-0">new/0</a></li>
    <li title="size-1"><a href="dict.html#size-1">size/1</a></li>
    <li title="store-3"><a href="dict.html#store-3">store/3</a></li>
    <li title="take-2"><a href="dict.html#take-2">take/2</a></li>
    <li title="to_list-1"><a href="dict.html#to_list-1">to_list/1</a></li>
    <li title="update-3"><a href="dict.html#update-3">update/3</a></li>
    <li title="update-4"><a href="dict.html#update-4">update/4</a></li>
    <li title="update_counter-3"><a href="dict.html#update_counter-3">update_counter/3</a></li>
    </ul>
</li>
<li id="no" title="digraph " expanded="false">digraph<ul>
<li><a href="digraph.html">
                  Top of manual page
                </a></li>
    <li title="add_edge-3"><a href="digraph.html#add_edge-3">add_edge/3</a></li>
    <li title="add_edge-4"><a href="digraph.html#add_edge-4">add_edge/4</a></li>
    <li title="add_edge-5"><a href="digraph.html#add_edge-5">add_edge/5</a></li>
    <li title="add_vertex-1"><a href="digraph.html#add_vertex-1">add_vertex/1</a></li>
    <li title="add_vertex-2"><a href="digraph.html#add_vertex-2">add_vertex/2</a></li>
    <li title="add_vertex-3"><a href="digraph.html#add_vertex-3">add_vertex/3</a></li>
    <li title="del_edge-2"><a href="digraph.html#del_edge-2">del_edge/2</a></li>
    <li title="del_edges-2"><a href="digraph.html#del_edges-2">del_edges/2</a></li>
    <li title="del_path-3"><a href="digraph.html#del_path-3">del_path/3</a></li>
    <li title="del_vertex-2"><a href="digraph.html#del_vertex-2">del_vertex/2</a></li>
    <li title="del_vertices-2"><a href="digraph.html#del_vertices-2">del_vertices/2</a></li>
    <li title="delete-1"><a href="digraph.html#delete-1">delete/1</a></li>
    <li title="edge-2"><a href="digraph.html#edge-2">edge/2</a></li>
    <li title="edges-1"><a href="digraph.html#edges-1">edges/1</a></li>
    <li title="edges-2"><a href="digraph.html#edges-2">edges/2</a></li>
    <li title="get_cycle-2"><a href="digraph.html#get_cycle-2">get_cycle/2</a></li>
    <li title="get_path-3"><a href="digraph.html#get_path-3">get_path/3</a></li>
    <li title="get_short_cycle-2"><a href="digraph.html#get_short_cycle-2">get_short_cycle/2</a></li>
    <li title="get_short_path-3"><a href="digraph.html#get_short_path-3">get_short_path/3</a></li>
    <li title="in_degree-2"><a href="digraph.html#in_degree-2">in_degree/2</a></li>
    <li title="in_edges-2"><a href="digraph.html#in_edges-2">in_edges/2</a></li>
    <li title="in_neighbours-2"><a href="digraph.html#in_neighbours-2">in_neighbours/2</a></li>
    <li title="info-1"><a href="digraph.html#info-1">info/1</a></li>
    <li title="new-0"><a href="digraph.html#new-0">new/0</a></li>
    <li title="new-1"><a href="digraph.html#new-1">new/1</a></li>
    <li title="no_edges-1"><a href="digraph.html#no_edges-1">no_edges/1</a></li>
    <li title="no_vertices-1"><a href="digraph.html#no_vertices-1">no_vertices/1</a></li>
    <li title="out_degree-2"><a href="digraph.html#out_degree-2">out_degree/2</a></li>
    <li title="out_edges-2"><a href="digraph.html#out_edges-2">out_edges/2</a></li>
    <li title="out_neighbours-2"><a href="digraph.html#out_neighbours-2">out_neighbours/2</a></li>
    <li title="vertex-2"><a href="digraph.html#vertex-2">vertex/2</a></li>
    <li title="vertices-1"><a href="digraph.html#vertices-1">vertices/1</a></li>
    </ul>
</li>
<li id="no" title="digraph_utils " expanded="false">digraph_utils<ul>
<li><a href="digraph_utils.html">
                  Top of manual page
                </a></li>
    <li title="arborescence_root-1"><a href="digraph_utils.html#arborescence_root-1">arborescence_root/1</a></li>
    <li title="components-1"><a href="digraph_utils.html#components-1">components/1</a></li>
    <li title="condensation-1"><a href="digraph_utils.html#condensation-1">condensation/1</a></li>
    <li title="cyclic_strong_components-1"><a href="digraph_utils.html#cyclic_strong_components-1">cyclic_strong_components/1</a></li>
    <li title="is_acyclic-1"><a href="digraph_utils.html#is_acyclic-1">is_acyclic/1</a></li>
    <li title="is_arborescence-1"><a href="digraph_utils.html#is_arborescence-1">is_arborescence/1</a></li>
    <li title="is_tree-1"><a href="digraph_utils.html#is_tree-1">is_tree/1</a></li>
    <li title="loop_vertices-1"><a href="digraph_utils.html#loop_vertices-1">loop_vertices/1</a></li>
    <li title="postorder-1"><a href="digraph_utils.html#postorder-1">postorder/1</a></li>
    <li title="preorder-1"><a href="digraph_utils.html#preorder-1">preorder/1</a></li>
    <li title="reachable-2"><a href="digraph_utils.html#reachable-2">reachable/2</a></li>
    <li title="reachable_neighbours-2"><a href="digraph_utils.html#reachable_neighbours-2">reachable_neighbours/2</a></li>
    <li title="reaching-2"><a href="digraph_utils.html#reaching-2">reaching/2</a></li>
    <li title="reaching_neighbours-2"><a href="digraph_utils.html#reaching_neighbours-2">reaching_neighbours/2</a></li>
    <li title="strong_components-1"><a href="digraph_utils.html#strong_components-1">strong_components/1</a></li>
    <li title="subgraph-2"><a href="digraph_utils.html#subgraph-2">subgraph/2</a></li>
    <li title="subgraph-3"><a href="digraph_utils.html#subgraph-3">subgraph/3</a></li>
    <li title="topsort-1"><a href="digraph_utils.html#topsort-1">topsort/1</a></li>
    </ul>
</li>
<li id="no" title="epp " expanded="false">epp<ul>
<li><a href="epp.html">
                  Top of manual page
                </a></li>
    <li title="close-1"><a href="epp.html#close-1">close/1</a></li>
    <li title="default_encoding-0"><a href="epp.html#default_encoding-0">default_encoding/0</a></li>
    <li title="encoding_to_string-1"><a href="epp.html#encoding_to_string-1">encoding_to_string/1</a></li>
    <li title="format_error-1"><a href="epp.html#format_error-1">format_error/1</a></li>
    <li title="open-1"><a href="epp.html#open-1">open/1</a></li>
    <li title="open-2"><a href="epp.html#open-2">open/2</a></li>
    <li title="open-3"><a href="epp.html#open-3">open/3</a></li>
    <li title="parse_erl_form-1"><a href="epp.html#parse_erl_form-1">parse_erl_form/1</a></li>
    <li title="parse_file-2"><a href="epp.html#parse_file-2">parse_file/2</a></li>
    <li title="parse_file-3"><a href="epp.html#parse_file-3">parse_file/3</a></li>
    <li title="read_encoding-1"><a href="epp.html#read_encoding-1">read_encoding/1</a></li>
    <li title="read_encoding-2"><a href="epp.html#read_encoding-2">read_encoding/2</a></li>
    <li title="read_encoding_from_binary-1"><a href="epp.html#read_encoding_from_binary-1">read_encoding_from_binary/1</a></li>
    <li title="read_encoding_from_binary-2"><a href="epp.html#read_encoding_from_binary-2">read_encoding_from_binary/2</a></li>
    <li title="set_encoding-1"><a href="epp.html#set_encoding-1">set_encoding/1</a></li>
    <li title="set_encoding-2"><a href="epp.html#set_encoding-2">set_encoding/2</a></li>
    </ul>
</li>
<li id="no" title="erl_anno " expanded="false">erl_anno<ul>
<li><a href="erl_anno.html">
                  Top of manual page
                </a></li>
    <li title="column-1"><a href="erl_anno.html#column-1">column/1</a></li>
    <li title="end_location-1"><a href="erl_anno.html#end_location-1">end_location/1</a></li>
    <li title="file-1"><a href="erl_anno.html#file-1">file/1</a></li>
    <li title="from_term-1"><a href="erl_anno.html#from_term-1">from_term/1</a></li>
    <li title="generated-1"><a href="erl_anno.html#generated-1">generated/1</a></li>
    <li title="is_anno-1"><a href="erl_anno.html#is_anno-1">is_anno/1</a></li>
    <li title="line-1"><a href="erl_anno.html#line-1">line/1</a></li>
    <li title="location-1"><a href="erl_anno.html#location-1">location/1</a></li>
    <li title="new-1"><a href="erl_anno.html#new-1">new/1</a></li>
    <li title="set_file-2"><a href="erl_anno.html#set_file-2">set_file/2</a></li>
    <li title="set_generated-2"><a href="erl_anno.html#set_generated-2">set_generated/2</a></li>
    <li title="set_line-2"><a href="erl_anno.html#set_line-2">set_line/2</a></li>
    <li title="set_location-2"><a href="erl_anno.html#set_location-2">set_location/2</a></li>
    <li title="set_record-2"><a href="erl_anno.html#set_record-2">set_record/2</a></li>
    <li title="set_text-2"><a href="erl_anno.html#set_text-2">set_text/2</a></li>
    <li title="text-1"><a href="erl_anno.html#text-1">text/1</a></li>
    <li title="to_term-1"><a href="erl_anno.html#to_term-1">to_term/1</a></li>
    </ul>
</li>
<li id="no" title="erl_eval " expanded="false">erl_eval<ul>
<li><a href="erl_eval.html">
                  Top of manual page
                </a></li>
    <li title="add_binding-3"><a href="erl_eval.html#add_binding-3">add_binding/3</a></li>
    <li title="binding-2"><a href="erl_eval.html#binding-2">binding/2</a></li>
    <li title="bindings-1"><a href="erl_eval.html#bindings-1">bindings/1</a></li>
    <li title="del_binding-2"><a href="erl_eval.html#del_binding-2">del_binding/2</a></li>
    <li title="expr-2"><a href="erl_eval.html#expr-2">expr/2</a></li>
    <li title="expr-3"><a href="erl_eval.html#expr-3">expr/3</a></li>
    <li title="expr-4"><a href="erl_eval.html#expr-4">expr/4</a></li>
    <li title="expr-5"><a href="erl_eval.html#expr-5">expr/5</a></li>
    <li title="expr_list-2"><a href="erl_eval.html#expr_list-2">expr_list/2</a></li>
    <li title="expr_list-3"><a href="erl_eval.html#expr_list-3">expr_list/3</a></li>
    <li title="expr_list-4"><a href="erl_eval.html#expr_list-4">expr_list/4</a></li>
    <li title="exprs-2"><a href="erl_eval.html#exprs-2">exprs/2</a></li>
    <li title="exprs-3"><a href="erl_eval.html#exprs-3">exprs/3</a></li>
    <li title="exprs-4"><a href="erl_eval.html#exprs-4">exprs/4</a></li>
    <li title="new_bindings-0"><a href="erl_eval.html#new_bindings-0">new_bindings/0</a></li>
    </ul>
</li>
<li id="no" title="erl_expand_records " expanded="false">erl_expand_records<ul>
<li><a href="erl_expand_records.html">
                  Top of manual page
                </a></li>
    <li title="module-2"><a href="erl_expand_records.html#module-2">module/2</a></li>
    </ul>
</li>
<li id="no" title="erl_id_trans " expanded="false">erl_id_trans<ul>
<li><a href="erl_id_trans.html">
                  Top of manual page
                </a></li>
    <li title="parse_transform-2"><a href="erl_id_trans.html#parse_transform-2">parse_transform/2</a></li>
    </ul>
</li>
<li id="no" title="erl_internal " expanded="false">erl_internal<ul>
<li><a href="erl_internal.html">
                  Top of manual page
                </a></li>
    <li title="add_predefined_functions-1"><a href="erl_internal.html#add_predefined_functions-1">add_predefined_functions/1</a></li>
    <li title="arith_op-2"><a href="erl_internal.html#arith_op-2">arith_op/2</a></li>
    <li title="bif-2"><a href="erl_internal.html#bif-2">bif/2</a></li>
    <li title="bool_op-2"><a href="erl_internal.html#bool_op-2">bool_op/2</a></li>
    <li title="comp_op-2"><a href="erl_internal.html#comp_op-2">comp_op/2</a></li>
    <li title="guard_bif-2"><a href="erl_internal.html#guard_bif-2">guard_bif/2</a></li>
    <li title="list_op-2"><a href="erl_internal.html#list_op-2">list_op/2</a></li>
    <li title="op_type-2"><a href="erl_internal.html#op_type-2">op_type/2</a></li>
    <li title="send_op-2"><a href="erl_internal.html#send_op-2">send_op/2</a></li>
    <li title="type_test-2"><a href="erl_internal.html#type_test-2">type_test/2</a></li>
    </ul>
</li>
<li id="no" title="erl_lint " expanded="false">erl_lint<ul>
<li><a href="erl_lint.html">
                  Top of manual page
                </a></li>
    <li title="format_error-1"><a href="erl_lint.html#format_error-1">format_error/1</a></li>
    <li title="is_guard_test-1"><a href="erl_lint.html#is_guard_test-1">is_guard_test/1</a></li>
    <li title="module-1"><a href="erl_lint.html#module-1">module/1</a></li>
    <li title="module-2"><a href="erl_lint.html#module-2">module/2</a></li>
    <li title="module-3"><a href="erl_lint.html#module-3">module/3</a></li>
    </ul>
</li>
<li id="no" title="erl_parse " expanded="false">erl_parse<ul>
<li><a href="erl_parse.html">
                  Top of manual page
                </a></li>
    <li title="abstract-1"><a href="erl_parse.html#abstract-1">abstract/1</a></li>
    <li title="abstract-2"><a href="erl_parse.html#abstract-2">abstract/2</a></li>
    <li title="anno_from_term-1"><a href="erl_parse.html#anno_from_term-1">anno_from_term/1</a></li>
    <li title="anno_to_term-1"><a href="erl_parse.html#anno_to_term-1">anno_to_term/1</a></li>
    <li title="fold_anno-3"><a href="erl_parse.html#fold_anno-3">fold_anno/3</a></li>
    <li title="format_error-1"><a href="erl_parse.html#format_error-1">format_error/1</a></li>
    <li title="map_anno-2"><a href="erl_parse.html#map_anno-2">map_anno/2</a></li>
    <li title="mapfold_anno-3"><a href="erl_parse.html#mapfold_anno-3">mapfold_anno/3</a></li>
    <li title="new_anno-1"><a href="erl_parse.html#new_anno-1">new_anno/1</a></li>
    <li title="normalise-1"><a href="erl_parse.html#normalise-1">normalise/1</a></li>
    <li title="parse_exprs-1"><a href="erl_parse.html#parse_exprs-1">parse_exprs/1</a></li>
    <li title="parse_form-1"><a href="erl_parse.html#parse_form-1">parse_form/1</a></li>
    <li title="parse_term-1"><a href="erl_parse.html#parse_term-1">parse_term/1</a></li>
    <li title="tokens-1"><a href="erl_parse.html#tokens-1">tokens/1</a></li>
    <li title="tokens-2"><a href="erl_parse.html#tokens-2">tokens/2</a></li>
    </ul>
</li>
<li id="no" title="erl_pp " expanded="false">erl_pp<ul>
<li><a href="erl_pp.html">
                  Top of manual page
                </a></li>
    <li title="attribute-1"><a href="erl_pp.html#attribute-1">attribute/1</a></li>
    <li title="attribute-2"><a href="erl_pp.html#attribute-2">attribute/2</a></li>
    <li title="expr-1"><a href="erl_pp.html#expr-1">expr/1</a></li>
    <li title="expr-2"><a href="erl_pp.html#expr-2">expr/2</a></li>
    <li title="expr-3"><a href="erl_pp.html#expr-3">expr/3</a></li>
    <li title="expr-4"><a href="erl_pp.html#expr-4">expr/4</a></li>
    <li title="exprs-1"><a href="erl_pp.html#exprs-1">exprs/1</a></li>
    <li title="exprs-2"><a href="erl_pp.html#exprs-2">exprs/2</a></li>
    <li title="exprs-3"><a href="erl_pp.html#exprs-3">exprs/3</a></li>
    <li title="form-1"><a href="erl_pp.html#form-1">form/1</a></li>
    <li title="form-2"><a href="erl_pp.html#form-2">form/2</a></li>
    <li title="function-1"><a href="erl_pp.html#function-1">function/1</a></li>
    <li title="function-2"><a href="erl_pp.html#function-2">function/2</a></li>
    <li title="guard-1"><a href="erl_pp.html#guard-1">guard/1</a></li>
    <li title="guard-2"><a href="erl_pp.html#guard-2">guard/2</a></li>
    </ul>
</li>
<li id="no" title="erl_scan " expanded="false">erl_scan<ul>
<li><a href="erl_scan.html">
                  Top of manual page
                </a></li>
    <li title="category-1"><a href="erl_scan.html#category-1">category/1</a></li>
    <li title="column-1"><a href="erl_scan.html#column-1">column/1</a></li>
    <li title="end_location-1"><a href="erl_scan.html#end_location-1">end_location/1</a></li>
    <li title="format_error-1"><a href="erl_scan.html#format_error-1">format_error/1</a></li>
    <li title="line-1"><a href="erl_scan.html#line-1">line/1</a></li>
    <li title="location-1"><a href="erl_scan.html#location-1">location/1</a></li>
    <li title="reserved_word-1"><a href="erl_scan.html#reserved_word-1">reserved_word/1</a></li>
    <li title="string-1"><a href="erl_scan.html#string-1">string/1</a></li>
    <li title="string-2"><a href="erl_scan.html#string-2">string/2</a></li>
    <li title="string-3"><a href="erl_scan.html#string-3">string/3</a></li>
    <li title="symbol-1"><a href="erl_scan.html#symbol-1">symbol/1</a></li>
    <li title="text-1"><a href="erl_scan.html#text-1">text/1</a></li>
    <li title="tokens-3"><a href="erl_scan.html#tokens-3">tokens/3</a></li>
    <li title="tokens-4"><a href="erl_scan.html#tokens-4">tokens/4</a></li>
    </ul>
</li>
<li id="no" title="erl_tar " expanded="false">erl_tar<ul>
<li><a href="erl_tar.html">
                  Top of manual page
                </a></li>
    <li title="add-3"><a href="erl_tar.html#add-3">add/3</a></li>
    <li title="add-4"><a href="erl_tar.html#add-4">add/4</a></li>
    <li title="close-1"><a href="erl_tar.html#close-1">close/1</a></li>
    <li title="create-2"><a href="erl_tar.html#create-2">create/2</a></li>
    <li title="create-3"><a href="erl_tar.html#create-3">create/3</a></li>
    <li title="extract-1"><a href="erl_tar.html#extract-1">extract/1</a></li>
    <li title="extract-2"><a href="erl_tar.html#extract-2">extract/2</a></li>
    <li title="format_error-1"><a href="erl_tar.html#format_error-1">format_error/1</a></li>
    <li title="init-3"><a href="erl_tar.html#init-3">init/3</a></li>
    <li title="open-2"><a href="erl_tar.html#open-2">open/2</a></li>
    <li title="t-1"><a href="erl_tar.html#t-1">t/1</a></li>
    <li title="table-1"><a href="erl_tar.html#table-1">table/1</a></li>
    <li title="table-2"><a href="erl_tar.html#table-2">table/2</a></li>
    <li title="tt-1"><a href="erl_tar.html#tt-1">tt/1</a></li>
    </ul>
</li>
<li id="no" title="ets " expanded="false">ets<ul>
<li><a href="ets.html">
                  Top of manual page
                </a></li>
    <li title="all-0"><a href="ets.html#all-0">all/0</a></li>
    <li title="delete-1"><a href="ets.html#delete-1">delete/1</a></li>
    <li title="delete-2"><a href="ets.html#delete-2">delete/2</a></li>
    <li title="delete_all_objects-1"><a href="ets.html#delete_all_objects-1">delete_all_objects/1</a></li>
    <li title="delete_object-2"><a href="ets.html#delete_object-2">delete_object/2</a></li>
    <li title="file2tab-1"><a href="ets.html#file2tab-1">file2tab/1</a></li>
    <li title="file2tab-2"><a href="ets.html#file2tab-2">file2tab/2</a></li>
    <li title="first-1"><a href="ets.html#first-1">first/1</a></li>
    <li title="foldl-3"><a href="ets.html#foldl-3">foldl/3</a></li>
    <li title="foldr-3"><a href="ets.html#foldr-3">foldr/3</a></li>
    <li title="from_dets-2"><a href="ets.html#from_dets-2">from_dets/2</a></li>
    <li title="fun2ms-1"><a href="ets.html#fun2ms-1">fun2ms/1</a></li>
    <li title="give_away-3"><a href="ets.html#give_away-3">give_away/3</a></li>
    <li title="i-0"><a href="ets.html#i-0">i/0</a></li>
    <li title="i-1"><a href="ets.html#i-1">i/1</a></li>
    <li title="info-1"><a href="ets.html#info-1">info/1</a></li>
    <li title="info-2"><a href="ets.html#info-2">info/2</a></li>
    <li title="init_table-2"><a href="ets.html#init_table-2">init_table/2</a></li>
    <li title="insert-2"><a href="ets.html#insert-2">insert/2</a></li>
    <li title="insert_new-2"><a href="ets.html#insert_new-2">insert_new/2</a></li>
    <li title="is_compiled_ms-1"><a href="ets.html#is_compiled_ms-1">is_compiled_ms/1</a></li>
    <li title="last-1"><a href="ets.html#last-1">last/1</a></li>
    <li title="lookup-2"><a href="ets.html#lookup-2">lookup/2</a></li>
    <li title="lookup_element-3"><a href="ets.html#lookup_element-3">lookup_element/3</a></li>
    <li title="match-1"><a href="ets.html#match-1">match/1</a></li>
    <li title="match-2"><a href="ets.html#match-2">match/2</a></li>
    <li title="match-3"><a href="ets.html#match-3">match/3</a></li>
    <li title="match_delete-2"><a href="ets.html#match_delete-2">match_delete/2</a></li>
    <li title="match_object-1"><a href="ets.html#match_object-1">match_object/1</a></li>
    <li title="match_object-2"><a href="ets.html#match_object-2">match_object/2</a></li>
    <li title="match_object-3"><a href="ets.html#match_object-3">match_object/3</a></li>
    <li title="match_spec_compile-1"><a href="ets.html#match_spec_compile-1">match_spec_compile/1</a></li>
    <li title="match_spec_run-2"><a href="ets.html#match_spec_run-2">match_spec_run/2</a></li>
    <li title="member-2"><a href="ets.html#member-2">member/2</a></li>
    <li title="new-2"><a href="ets.html#new-2">new/2</a></li>
    <li title="next-2"><a href="ets.html#next-2">next/2</a></li>
    <li title="prev-2"><a href="ets.html#prev-2">prev/2</a></li>
    <li title="rename-2"><a href="ets.html#rename-2">rename/2</a></li>
    <li title="repair_continuation-2"><a href="ets.html#repair_continuation-2">repair_continuation/2</a></li>
    <li title="safe_fixtable-2"><a href="ets.html#safe_fixtable-2">safe_fixtable/2</a></li>
    <li title="select-1"><a href="ets.html#select-1">select/1</a></li>
    <li title="select-2"><a href="ets.html#select-2">select/2</a></li>
    <li title="select-3"><a href="ets.html#select-3">select/3</a></li>
    <li title="select_count-2"><a href="ets.html#select_count-2">select_count/2</a></li>
    <li title="select_delete-2"><a href="ets.html#select_delete-2">select_delete/2</a></li>
    <li title="select_replace-2"><a href="ets.html#select_replace-2">select_replace/2</a></li>
    <li title="select_reverse-1"><a href="ets.html#select_reverse-1">select_reverse/1</a></li>
    <li title="select_reverse-2"><a href="ets.html#select_reverse-2">select_reverse/2</a></li>
    <li title="select_reverse-3"><a href="ets.html#select_reverse-3">select_reverse/3</a></li>
    <li title="setopts-2"><a href="ets.html#setopts-2">setopts/2</a></li>
    <li title="slot-2"><a href="ets.html#slot-2">slot/2</a></li>
    <li title="tab2file-2"><a href="ets.html#tab2file-2">tab2file/2</a></li>
    <li title="tab2file-3"><a href="ets.html#tab2file-3">tab2file/3</a></li>
    <li title="tab2list-1"><a href="ets.html#tab2list-1">tab2list/1</a></li>
    <li title="tabfile_info-1"><a href="ets.html#tabfile_info-1">tabfile_info/1</a></li>
    <li title="table-1"><a href="ets.html#table-1">table/1</a></li>
    <li title="table-2"><a href="ets.html#table-2">table/2</a></li>
    <li title="take-2"><a href="ets.html#take-2">take/2</a></li>
    <li title="test_ms-2"><a href="ets.html#test_ms-2">test_ms/2</a></li>
    <li title="to_dets-2"><a href="ets.html#to_dets-2">to_dets/2</a></li>
    <li title="update_counter-3"><a href="ets.html#update_counter-3">update_counter/3</a></li>
    <li title="update_counter-4"><a href="ets.html#update_counter-4">update_counter/4</a></li>
    <li title="update_element-3"><a href="ets.html#update_element-3">update_element/3</a></li>
    <li title="whereis-1"><a href="ets.html#whereis-1">whereis/1</a></li>
    </ul>
</li>
<li id="no" title="file_sorter " expanded="false">file_sorter<ul>
<li><a href="file_sorter.html">
                  Top of manual page
                </a></li>
    <li title="check-1"><a href="file_sorter.html#check-1">check/1</a></li>
    <li title="check-2"><a href="file_sorter.html#check-2">check/2</a></li>
    <li title="keycheck-2"><a href="file_sorter.html#keycheck-2">keycheck/2</a></li>
    <li title="keycheck-3"><a href="file_sorter.html#keycheck-3">keycheck/3</a></li>
    <li title="keymerge-3"><a href="file_sorter.html#keymerge-3">keymerge/3</a></li>
    <li title="keymerge-4"><a href="file_sorter.html#keymerge-4">keymerge/4</a></li>
    <li title="keysort-2"><a href="file_sorter.html#keysort-2">keysort/2</a></li>
    <li title="keysort-3"><a href="file_sorter.html#keysort-3">keysort/3</a></li>
    <li title="keysort-4"><a href="file_sorter.html#keysort-4">keysort/4</a></li>
    <li title="merge-2"><a href="file_sorter.html#merge-2">merge/2</a></li>
    <li title="merge-3"><a href="file_sorter.html#merge-3">merge/3</a></li>
    <li title="sort-1"><a href="file_sorter.html#sort-1">sort/1</a></li>
    <li title="sort-2"><a href="file_sorter.html#sort-2">sort/2</a></li>
    <li title="sort-3"><a href="file_sorter.html#sort-3">sort/3</a></li>
    </ul>
</li>
<li id="no" title="filelib " expanded="false">filelib<ul>
<li><a href="filelib.html">
                  Top of manual page
                </a></li>
    <li title="ensure_dir-1"><a href="filelib.html#ensure_dir-1">ensure_dir/1</a></li>
    <li title="file_size-1"><a href="filelib.html#file_size-1">file_size/1</a></li>
    <li title="find_file-2"><a href="filelib.html#find_file-2">find_file/2</a></li>
    <li title="find_file-3"><a href="filelib.html#find_file-3">find_file/3</a></li>
    <li title="find_source-1"><a href="filelib.html#find_source-1">find_source/1</a></li>
    <li title="find_source-2"><a href="filelib.html#find_source-2">find_source/2</a></li>
    <li title="find_source-3"><a href="filelib.html#find_source-3">find_source/3</a></li>
    <li title="fold_files-5"><a href="filelib.html#fold_files-5">fold_files/5</a></li>
    <li title="is_dir-1"><a href="filelib.html#is_dir-1">is_dir/1</a></li>
    <li title="is_file-1"><a href="filelib.html#is_file-1">is_file/1</a></li>
    <li title="is_regular-1"><a href="filelib.html#is_regular-1">is_regular/1</a></li>
    <li title="last_modified-1"><a href="filelib.html#last_modified-1">last_modified/1</a></li>
    <li title="wildcard-1"><a href="filelib.html#wildcard-1">wildcard/1</a></li>
    <li title="wildcard-2"><a href="filelib.html#wildcard-2">wildcard/2</a></li>
    </ul>
</li>
<li id="no" title="filename " expanded="false">filename<ul>
<li><a href="filename.html">
                  Top of manual page
                </a></li>
    <li title="absname-1"><a href="filename.html#absname-1">absname/1</a></li>
    <li title="absname-2"><a href="filename.html#absname-2">absname/2</a></li>
    <li title="absname_join-2"><a href="filename.html#absname_join-2">absname_join/2</a></li>
    <li title="basedir-2"><a href="filename.html#basedir-2">basedir/2</a></li>
    <li title="basedir-3"><a href="filename.html#basedir-3">basedir/3</a></li>
    <li title="basename-1"><a href="filename.html#basename-1">basename/1</a></li>
    <li title="basename-2"><a href="filename.html#basename-2">basename/2</a></li>
    <li title="dirname-1"><a href="filename.html#dirname-1">dirname/1</a></li>
    <li title="extension-1"><a href="filename.html#extension-1">extension/1</a></li>
    <li title="find_src-1"><a href="filename.html#find_src-1">find_src/1</a></li>
    <li title="find_src-2"><a href="filename.html#find_src-2">find_src/2</a></li>
    <li title="flatten-1"><a href="filename.html#flatten-1">flatten/1</a></li>
    <li title="join-1"><a href="filename.html#join-1">join/1</a></li>
    <li title="join-2"><a href="filename.html#join-2">join/2</a></li>
    <li title="nativename-1"><a href="filename.html#nativename-1">nativename/1</a></li>
    <li title="pathtype-1"><a href="filename.html#pathtype-1">pathtype/1</a></li>
    <li title="rootname-1"><a href="filename.html#rootname-1">rootname/1</a></li>
    <li title="rootname-2"><a href="filename.html#rootname-2">rootname/2</a></li>
    <li title="safe_relative_path-1"><a href="filename.html#safe_relative_path-1">safe_relative_path/1</a></li>
    <li title="split-1"><a href="filename.html#split-1">split/1</a></li>
    </ul>
</li>
<li id="no" title="gb_sets " expanded="false">gb_sets<ul>
<li><a href="gb_sets.html">
                  Top of manual page
                </a></li>
    <li title="add-2"><a href="gb_sets.html#add-2">add/2</a></li>
    <li title="add_element-2"><a href="gb_sets.html#add_element-2">add_element/2</a></li>
    <li title="balance-1"><a href="gb_sets.html#balance-1">balance/1</a></li>
    <li title="del_element-2"><a href="gb_sets.html#del_element-2">del_element/2</a></li>
    <li title="delete-2"><a href="gb_sets.html#delete-2">delete/2</a></li>
    <li title="delete_any-2"><a href="gb_sets.html#delete_any-2">delete_any/2</a></li>
    <li title="difference-2"><a href="gb_sets.html#difference-2">difference/2</a></li>
    <li title="empty-0"><a href="gb_sets.html#empty-0">empty/0</a></li>
    <li title="filter-2"><a href="gb_sets.html#filter-2">filter/2</a></li>
    <li title="fold-3"><a href="gb_sets.html#fold-3">fold/3</a></li>
    <li title="from_list-1"><a href="gb_sets.html#from_list-1">from_list/1</a></li>
    <li title="from_ordset-1"><a href="gb_sets.html#from_ordset-1">from_ordset/1</a></li>
    <li title="insert-2"><a href="gb_sets.html#insert-2">insert/2</a></li>
    <li title="intersection-1"><a href="gb_sets.html#intersection-1">intersection/1</a></li>
    <li title="intersection-2"><a href="gb_sets.html#intersection-2">intersection/2</a></li>
    <li title="is_disjoint-2"><a href="gb_sets.html#is_disjoint-2">is_disjoint/2</a></li>
    <li title="is_element-2"><a href="gb_sets.html#is_element-2">is_element/2</a></li>
    <li title="is_empty-1"><a href="gb_sets.html#is_empty-1">is_empty/1</a></li>
    <li title="is_member-2"><a href="gb_sets.html#is_member-2">is_member/2</a></li>
    <li title="is_set-1"><a href="gb_sets.html#is_set-1">is_set/1</a></li>
    <li title="is_subset-2"><a href="gb_sets.html#is_subset-2">is_subset/2</a></li>
    <li title="iterator-1"><a href="gb_sets.html#iterator-1">iterator/1</a></li>
    <li title="iterator_from-2"><a href="gb_sets.html#iterator_from-2">iterator_from/2</a></li>
    <li title="largest-1"><a href="gb_sets.html#largest-1">largest/1</a></li>
    <li title="new-0"><a href="gb_sets.html#new-0">new/0</a></li>
    <li title="next-1"><a href="gb_sets.html#next-1">next/1</a></li>
    <li title="singleton-1"><a href="gb_sets.html#singleton-1">singleton/1</a></li>
    <li title="size-1"><a href="gb_sets.html#size-1">size/1</a></li>
    <li title="smallest-1"><a href="gb_sets.html#smallest-1">smallest/1</a></li>
    <li title="subtract-2"><a href="gb_sets.html#subtract-2">subtract/2</a></li>
    <li title="take_largest-1"><a href="gb_sets.html#take_largest-1">take_largest/1</a></li>
    <li title="take_smallest-1"><a href="gb_sets.html#take_smallest-1">take_smallest/1</a></li>
    <li title="to_list-1"><a href="gb_sets.html#to_list-1">to_list/1</a></li>
    <li title="union-1"><a href="gb_sets.html#union-1">union/1</a></li>
    <li title="union-2"><a href="gb_sets.html#union-2">union/2</a></li>
    </ul>
</li>
<li id="no" title="gb_trees " expanded="false">gb_trees<ul>
<li><a href="gb_trees.html">
                  Top of manual page
                </a></li>
    <li title="balance-1"><a href="gb_trees.html#balance-1">balance/1</a></li>
    <li title="delete-2"><a href="gb_trees.html#delete-2">delete/2</a></li>
    <li title="delete_any-2"><a href="gb_trees.html#delete_any-2">delete_any/2</a></li>
    <li title="empty-0"><a href="gb_trees.html#empty-0">empty/0</a></li>
    <li title="enter-3"><a href="gb_trees.html#enter-3">enter/3</a></li>
    <li title="from_orddict-1"><a href="gb_trees.html#from_orddict-1">from_orddict/1</a></li>
    <li title="get-2"><a href="gb_trees.html#get-2">get/2</a></li>
    <li title="insert-3"><a href="gb_trees.html#insert-3">insert/3</a></li>
    <li title="is_defined-2"><a href="gb_trees.html#is_defined-2">is_defined/2</a></li>
    <li title="is_empty-1"><a href="gb_trees.html#is_empty-1">is_empty/1</a></li>
    <li title="iterator-1"><a href="gb_trees.html#iterator-1">iterator/1</a></li>
    <li title="iterator_from-2"><a href="gb_trees.html#iterator_from-2">iterator_from/2</a></li>
    <li title="keys-1"><a href="gb_trees.html#keys-1">keys/1</a></li>
    <li title="largest-1"><a href="gb_trees.html#largest-1">largest/1</a></li>
    <li title="lookup-2"><a href="gb_trees.html#lookup-2">lookup/2</a></li>
    <li title="map-2"><a href="gb_trees.html#map-2">map/2</a></li>
    <li title="next-1"><a href="gb_trees.html#next-1">next/1</a></li>
    <li title="size-1"><a href="gb_trees.html#size-1">size/1</a></li>
    <li title="smallest-1"><a href="gb_trees.html#smallest-1">smallest/1</a></li>
    <li title="take-2"><a href="gb_trees.html#take-2">take/2</a></li>
    <li title="take_any-2"><a href="gb_trees.html#take_any-2">take_any/2</a></li>
    <li title="take_largest-1"><a href="gb_trees.html#take_largest-1">take_largest/1</a></li>
    <li title="take_smallest-1"><a href="gb_trees.html#take_smallest-1">take_smallest/1</a></li>
    <li title="to_list-1"><a href="gb_trees.html#to_list-1">to_list/1</a></li>
    <li title="update-3"><a href="gb_trees.html#update-3">update/3</a></li>
    <li title="values-1"><a href="gb_trees.html#values-1">values/1</a></li>
    </ul>
</li>
<li id="no" title="gen_event " expanded="false">gen_event<ul>
<li><a href="gen_event.html">
                  Top of manual page
                </a></li>
    <li title="add_handler-3"><a href="gen_event.html#add_handler-3">add_handler/3</a></li>
    <li title="add_sup_handler-3"><a href="gen_event.html#add_sup_handler-3">add_sup_handler/3</a></li>
    <li title="call-3"><a href="gen_event.html#call-3">call/3</a></li>
    <li title="call-4"><a href="gen_event.html#call-4">call/4</a></li>
    <li title="delete_handler-3"><a href="gen_event.html#delete_handler-3">delete_handler/3</a></li>
    <li title="notify-2"><a href="gen_event.html#notify-2">notify/2</a></li>
    <li title="start-0"><a href="gen_event.html#start-0">start/0</a></li>
    <li title="start-1"><a href="gen_event.html#start-1">start/1</a></li>
    <li title="start-2"><a href="gen_event.html#start-2">start/2</a></li>
    <li title="start_link-0"><a href="gen_event.html#start_link-0">start_link/0</a></li>
    <li title="start_link-1"><a href="gen_event.html#start_link-1">start_link/1</a></li>
    <li title="start_link-2"><a href="gen_event.html#start_link-2">start_link/2</a></li>
    <li title="stop-1"><a href="gen_event.html#stop-1">stop/1</a></li>
    <li title="stop-3"><a href="gen_event.html#stop-3">stop/3</a></li>
    <li title="swap_handler-3"><a href="gen_event.html#swap_handler-3">swap_handler/3</a></li>
    <li title="swap_sup_handler-3"><a href="gen_event.html#swap_sup_handler-3">swap_sup_handler/3</a></li>
    <li title="sync_notify-2"><a href="gen_event.html#sync_notify-2">sync_notify/2</a></li>
    <li title="which_handlers-1"><a href="gen_event.html#which_handlers-1">which_handlers/1</a></li>
    <li title="Module:code_change-3"><a href="gen_event.html#Module:code_change-3">Module:code_change/3</a></li>
    <li title="Module:format_status-2"><a href="gen_event.html#Module:format_status-2">Module:format_status/2</a></li>
    <li title="Module:handle_call-2"><a href="gen_event.html#Module:handle_call-2">Module:handle_call/2</a></li>
    <li title="Module:handle_event-2"><a href="gen_event.html#Module:handle_event-2">Module:handle_event/2</a></li>
    <li title="Module:handle_info-2"><a href="gen_event.html#Module:handle_info-2">Module:handle_info/2</a></li>
    <li title="Module:init-1"><a href="gen_event.html#Module:init-1">Module:init/1</a></li>
    <li title="Module:terminate-2"><a href="gen_event.html#Module:terminate-2">Module:terminate/2</a></li>
    </ul>
</li>
<li title="gen_fsm"><a href="gen_fsm.html">gen_fsm</a></li>
<li id="no" title="gen_server " expanded="false">gen_server<ul>
<li><a href="gen_server.html">
                  Top of manual page
                </a></li>
    <li title="abcast-2"><a href="gen_server.html#abcast-2">abcast/2</a></li>
    <li title="abcast-3"><a href="gen_server.html#abcast-3">abcast/3</a></li>
    <li title="call-2"><a href="gen_server.html#call-2">call/2</a></li>
    <li title="call-3"><a href="gen_server.html#call-3">call/3</a></li>
    <li title="cast-2"><a href="gen_server.html#cast-2">cast/2</a></li>
    <li title="enter_loop-3"><a href="gen_server.html#enter_loop-3">enter_loop/3</a></li>
    <li title="enter_loop-4"><a href="gen_server.html#enter_loop-4">enter_loop/4</a></li>
    <li title="enter_loop-4"><a href="gen_server.html#enter_loop-4">enter_loop/4</a></li>
    <li title="enter_loop-5"><a href="gen_server.html#enter_loop-5">enter_loop/5</a></li>
    <li title="multi_call-2"><a href="gen_server.html#multi_call-2">multi_call/2</a></li>
    <li title="multi_call-3"><a href="gen_server.html#multi_call-3">multi_call/3</a></li>
    <li title="multi_call-4"><a href="gen_server.html#multi_call-4">multi_call/4</a></li>
    <li title="reply-2"><a href="gen_server.html#reply-2">reply/2</a></li>
    <li title="start-3"><a href="gen_server.html#start-3">start/3</a></li>
    <li title="start-4"><a href="gen_server.html#start-4">start/4</a></li>
    <li title="start_link-3"><a href="gen_server.html#start_link-3">start_link/3</a></li>
    <li title="start_link-4"><a href="gen_server.html#start_link-4">start_link/4</a></li>
    <li title="stop-1"><a href="gen_server.html#stop-1">stop/1</a></li>
    <li title="stop-3"><a href="gen_server.html#stop-3">stop/3</a></li>
    <li title="Module:code_change-3"><a href="gen_server.html#Module:code_change-3">Module:code_change/3</a></li>
    <li title="Module:format_status-2"><a href="gen_server.html#Module:format_status-2">Module:format_status/2</a></li>
    <li title="Module:handle_call-3"><a href="gen_server.html#Module:handle_call-3">Module:handle_call/3</a></li>
    <li title="Module:handle_cast-2"><a href="gen_server.html#Module:handle_cast-2">Module:handle_cast/2</a></li>
    <li title="Module:handle_continue-2"><a href="gen_server.html#Module:handle_continue-2">Module:handle_continue/2</a></li>
    <li title="Module:handle_info-2"><a href="gen_server.html#Module:handle_info-2">Module:handle_info/2</a></li>
    <li title="Module:init-1"><a href="gen_server.html#Module:init-1">Module:init/1</a></li>
    <li title="Module:terminate-2"><a href="gen_server.html#Module:terminate-2">Module:terminate/2</a></li>
    </ul>
</li>
<li id="no" title="gen_statem " expanded="false">gen_statem<ul>
<li><a href="gen_statem.html">
                  Top of manual page
                </a></li>
    <li title="call-2"><a href="gen_statem.html#call-2">call/2</a></li>
    <li title="call-3"><a href="gen_statem.html#call-3">call/3</a></li>
    <li title="cast-2"><a href="gen_statem.html#cast-2">cast/2</a></li>
    <li title="enter_loop-4"><a href="gen_statem.html#enter_loop-4">enter_loop/4</a></li>
    <li title="enter_loop-5"><a href="gen_statem.html#enter_loop-5">enter_loop/5</a></li>
    <li title="enter_loop-6"><a href="gen_statem.html#enter_loop-6">enter_loop/6</a></li>
    <li title="reply-1"><a href="gen_statem.html#reply-1">reply/1</a></li>
    <li title="reply-2"><a href="gen_statem.html#reply-2">reply/2</a></li>
    <li title="start-3"><a href="gen_statem.html#start-3">start/3</a></li>
    <li title="start-4"><a href="gen_statem.html#start-4">start/4</a></li>
    <li title="start_link-3"><a href="gen_statem.html#start_link-3">start_link/3</a></li>
    <li title="start_link-4"><a href="gen_statem.html#start_link-4">start_link/4</a></li>
    <li title="stop-1"><a href="gen_statem.html#stop-1">stop/1</a></li>
    <li title="stop-3"><a href="gen_statem.html#stop-3">stop/3</a></li>
    <li title="Module:StateName-3"><a href="gen_statem.html#Module:StateName-3">Module:StateName/3</a></li>
    <li title="Module:StateName-3"><a href="gen_statem.html#Module:StateName-3">Module:StateName/3</a></li>
    <li title="Module:callback_mode-0"><a href="gen_statem.html#Module:callback_mode-0">Module:callback_mode/0</a></li>
    <li title="Module:code_change-4"><a href="gen_statem.html#Module:code_change-4">Module:code_change/4</a></li>
    <li title="Module:format_status-2"><a href="gen_statem.html#Module:format_status-2">Module:format_status/2</a></li>
    <li title="Module:handle_event-4"><a href="gen_statem.html#Module:handle_event-4">Module:handle_event/4</a></li>
    <li title="Module:handle_event-4"><a href="gen_statem.html#Module:handle_event-4">Module:handle_event/4</a></li>
    <li title="Module:init-1"><a href="gen_statem.html#Module:init-1">Module:init/1</a></li>
    <li title="Module:terminate-3"><a href="gen_statem.html#Module:terminate-3">Module:terminate/3</a></li>
    </ul>
</li>
<li id="no" title="io " expanded="false">io<ul>
<li><a href="io.html">
                  Top of manual page
                </a></li>
    <li title="columns-0"><a href="io.html#columns-0">columns/0</a></li>
    <li title="columns-1"><a href="io.html#columns-1">columns/1</a></li>
    <li title="format-1"><a href="io.html#format-1">format/1</a></li>
    <li title="format-2"><a href="io.html#format-2">format/2</a></li>
    <li title="format-3"><a href="io.html#format-3">format/3</a></li>
    <li title="fread-2"><a href="io.html#fread-2">fread/2</a></li>
    <li title="fread-3"><a href="io.html#fread-3">fread/3</a></li>
    <li title="fwrite-1"><a href="io.html#fwrite-1">fwrite/1</a></li>
    <li title="fwrite-2"><a href="io.html#fwrite-2">fwrite/2</a></li>
    <li title="fwrite-3"><a href="io.html#fwrite-3">fwrite/3</a></li>
    <li title="get_chars-2"><a href="io.html#get_chars-2">get_chars/2</a></li>
    <li title="get_chars-3"><a href="io.html#get_chars-3">get_chars/3</a></li>
    <li title="get_line-1"><a href="io.html#get_line-1">get_line/1</a></li>
    <li title="get_line-2"><a href="io.html#get_line-2">get_line/2</a></li>
    <li title="getopts-0"><a href="io.html#getopts-0">getopts/0</a></li>
    <li title="getopts-1"><a href="io.html#getopts-1">getopts/1</a></li>
    <li title="nl-0"><a href="io.html#nl-0">nl/0</a></li>
    <li title="nl-1"><a href="io.html#nl-1">nl/1</a></li>
    <li title="parse_erl_exprs-1"><a href="io.html#parse_erl_exprs-1">parse_erl_exprs/1</a></li>
    <li title="parse_erl_exprs-2"><a href="io.html#parse_erl_exprs-2">parse_erl_exprs/2</a></li>
    <li title="parse_erl_exprs-3"><a href="io.html#parse_erl_exprs-3">parse_erl_exprs/3</a></li>
    <li title="parse_erl_exprs-4"><a href="io.html#parse_erl_exprs-4">parse_erl_exprs/4</a></li>
    <li title="parse_erl_form-1"><a href="io.html#parse_erl_form-1">parse_erl_form/1</a></li>
    <li title="parse_erl_form-2"><a href="io.html#parse_erl_form-2">parse_erl_form/2</a></li>
    <li title="parse_erl_form-3"><a href="io.html#parse_erl_form-3">parse_erl_form/3</a></li>
    <li title="parse_erl_form-4"><a href="io.html#parse_erl_form-4">parse_erl_form/4</a></li>
    <li title="printable_range-0"><a href="io.html#printable_range-0">printable_range/0</a></li>
    <li title="put_chars-1"><a href="io.html#put_chars-1">put_chars/1</a></li>
    <li title="put_chars-2"><a href="io.html#put_chars-2">put_chars/2</a></li>
    <li title="read-1"><a href="io.html#read-1">read/1</a></li>
    <li title="read-2"><a href="io.html#read-2">read/2</a></li>
    <li title="read-3"><a href="io.html#read-3">read/3</a></li>
    <li title="read-4"><a href="io.html#read-4">read/4</a></li>
    <li title="rows-0"><a href="io.html#rows-0">rows/0</a></li>
    <li title="rows-1"><a href="io.html#rows-1">rows/1</a></li>
    <li title="scan_erl_exprs-1"><a href="io.html#scan_erl_exprs-1">scan_erl_exprs/1</a></li>
    <li title="scan_erl_exprs-2"><a href="io.html#scan_erl_exprs-2">scan_erl_exprs/2</a></li>
    <li title="scan_erl_exprs-3"><a href="io.html#scan_erl_exprs-3">scan_erl_exprs/3</a></li>
    <li title="scan_erl_exprs-4"><a href="io.html#scan_erl_exprs-4">scan_erl_exprs/4</a></li>
    <li title="scan_erl_form-1"><a href="io.html#scan_erl_form-1">scan_erl_form/1</a></li>
    <li title="scan_erl_form-2"><a href="io.html#scan_erl_form-2">scan_erl_form/2</a></li>
    <li title="scan_erl_form-3"><a href="io.html#scan_erl_form-3">scan_erl_form/3</a></li>
    <li title="scan_erl_form-4"><a href="io.html#scan_erl_form-4">scan_erl_form/4</a></li>
    <li title="setopts-1"><a href="io.html#setopts-1">setopts/1</a></li>
    <li title="setopts-2"><a href="io.html#setopts-2">setopts/2</a></li>
    <li title="write-1"><a href="io.html#write-1">write/1</a></li>
    <li title="write-2"><a href="io.html#write-2">write/2</a></li>
    </ul>
</li>
<li id="no" title="io_lib " expanded="false">io_lib<ul>
<li><a href="io_lib.html">
                  Top of manual page
                </a></li>
    <li title="build_text-1"><a href="io_lib.html#build_text-1">build_text/1</a></li>
    <li title="char_list-1"><a href="io_lib.html#char_list-1">char_list/1</a></li>
    <li title="deep_char_list-1"><a href="io_lib.html#deep_char_list-1">deep_char_list/1</a></li>
    <li title="deep_latin1_char_list-1"><a href="io_lib.html#deep_latin1_char_list-1">deep_latin1_char_list/1</a></li>
    <li title="format-2"><a href="io_lib.html#format-2">format/2</a></li>
    <li title="format-3"><a href="io_lib.html#format-3">format/3</a></li>
    <li title="fread-2"><a href="io_lib.html#fread-2">fread/2</a></li>
    <li title="fread-3"><a href="io_lib.html#fread-3">fread/3</a></li>
    <li title="fwrite-2"><a href="io_lib.html#fwrite-2">fwrite/2</a></li>
    <li title="fwrite-3"><a href="io_lib.html#fwrite-3">fwrite/3</a></li>
    <li title="indentation-2"><a href="io_lib.html#indentation-2">indentation/2</a></li>
    <li title="latin1_char_list-1"><a href="io_lib.html#latin1_char_list-1">latin1_char_list/1</a></li>
    <li title="nl-0"><a href="io_lib.html#nl-0">nl/0</a></li>
    <li title="print-1"><a href="io_lib.html#print-1">print/1</a></li>
    <li title="print-4"><a href="io_lib.html#print-4">print/4</a></li>
    <li title="printable_latin1_list-1"><a href="io_lib.html#printable_latin1_list-1">printable_latin1_list/1</a></li>
    <li title="printable_list-1"><a href="io_lib.html#printable_list-1">printable_list/1</a></li>
    <li title="printable_unicode_list-1"><a href="io_lib.html#printable_unicode_list-1">printable_unicode_list/1</a></li>
    <li title="scan_format-2"><a href="io_lib.html#scan_format-2">scan_format/2</a></li>
    <li title="unscan_format-1"><a href="io_lib.html#unscan_format-1">unscan_format/1</a></li>
    <li title="write-1"><a href="io_lib.html#write-1">write/1</a></li>
    <li title="write-2"><a href="io_lib.html#write-2">write/2</a></li>
    <li title="write_atom-1"><a href="io_lib.html#write_atom-1">write_atom/1</a></li>
    <li title="write_atom_as_latin1-1"><a href="io_lib.html#write_atom_as_latin1-1">write_atom_as_latin1/1</a></li>
    <li title="write_char-1"><a href="io_lib.html#write_char-1">write_char/1</a></li>
    <li title="write_char_as_latin1-1"><a href="io_lib.html#write_char_as_latin1-1">write_char_as_latin1/1</a></li>
    <li title="write_latin1_char-1"><a href="io_lib.html#write_latin1_char-1">write_latin1_char/1</a></li>
    <li title="write_latin1_string-1"><a href="io_lib.html#write_latin1_string-1">write_latin1_string/1</a></li>
    <li title="write_string-1"><a href="io_lib.html#write_string-1">write_string/1</a></li>
    <li title="write_string_as_latin1-1"><a href="io_lib.html#write_string_as_latin1-1">write_string_as_latin1/1</a></li>
    </ul>
</li>
<li id="no" title="lists " expanded="false">lists<ul>
<li><a href="lists.html">
                  Top of manual page
                </a></li>
    <li title="all-2"><a href="lists.html#all-2">all/2</a></li>
    <li title="any-2"><a href="lists.html#any-2">any/2</a></li>
    <li title="append-1"><a href="lists.html#append-1">append/1</a></li>
    <li title="append-2"><a href="lists.html#append-2">append/2</a></li>
    <li title="concat-1"><a href="lists.html#concat-1">concat/1</a></li>
    <li title="delete-2"><a href="lists.html#delete-2">delete/2</a></li>
    <li title="droplast-1"><a href="lists.html#droplast-1">droplast/1</a></li>
    <li title="dropwhile-2"><a href="lists.html#dropwhile-2">dropwhile/2</a></li>
    <li title="duplicate-2"><a href="lists.html#duplicate-2">duplicate/2</a></li>
    <li title="filter-2"><a href="lists.html#filter-2">filter/2</a></li>
    <li title="filtermap-2"><a href="lists.html#filtermap-2">filtermap/2</a></li>
    <li title="flatlength-1"><a href="lists.html#flatlength-1">flatlength/1</a></li>
    <li title="flatmap-2"><a href="lists.html#flatmap-2">flatmap/2</a></li>
    <li title="flatten-1"><a href="lists.html#flatten-1">flatten/1</a></li>
    <li title="flatten-2"><a href="lists.html#flatten-2">flatten/2</a></li>
    <li title="foldl-3"><a href="lists.html#foldl-3">foldl/3</a></li>
    <li title="foldr-3"><a href="lists.html#foldr-3">foldr/3</a></li>
    <li title="foreach-2"><a href="lists.html#foreach-2">foreach/2</a></li>
    <li title="join-2"><a href="lists.html#join-2">join/2</a></li>
    <li title="keydelete-3"><a href="lists.html#keydelete-3">keydelete/3</a></li>
    <li title="keyfind-3"><a href="lists.html#keyfind-3">keyfind/3</a></li>
    <li title="keymap-3"><a href="lists.html#keymap-3">keymap/3</a></li>
    <li title="keymember-3"><a href="lists.html#keymember-3">keymember/3</a></li>
    <li title="keymerge-3"><a href="lists.html#keymerge-3">keymerge/3</a></li>
    <li title="keyreplace-4"><a href="lists.html#keyreplace-4">keyreplace/4</a></li>
    <li title="keysearch-3"><a href="lists.html#keysearch-3">keysearch/3</a></li>
    <li title="keysort-2"><a href="lists.html#keysort-2">keysort/2</a></li>
    <li title="keystore-4"><a href="lists.html#keystore-4">keystore/4</a></li>
    <li title="keytake-3"><a href="lists.html#keytake-3">keytake/3</a></li>
    <li title="last-1"><a href="lists.html#last-1">last/1</a></li>
    <li title="map-2"><a href="lists.html#map-2">map/2</a></li>
    <li title="mapfoldl-3"><a href="lists.html#mapfoldl-3">mapfoldl/3</a></li>
    <li title="mapfoldr-3"><a href="lists.html#mapfoldr-3">mapfoldr/3</a></li>
    <li title="max-1"><a href="lists.html#max-1">max/1</a></li>
    <li title="member-2"><a href="lists.html#member-2">member/2</a></li>
    <li title="merge-1"><a href="lists.html#merge-1">merge/1</a></li>
    <li title="merge-2"><a href="lists.html#merge-2">merge/2</a></li>
    <li title="merge-3"><a href="lists.html#merge-3">merge/3</a></li>
    <li title="merge3-3"><a href="lists.html#merge3-3">merge3/3</a></li>
    <li title="min-1"><a href="lists.html#min-1">min/1</a></li>
    <li title="nth-2"><a href="lists.html#nth-2">nth/2</a></li>
    <li title="nthtail-2"><a href="lists.html#nthtail-2">nthtail/2</a></li>
    <li title="partition-2"><a href="lists.html#partition-2">partition/2</a></li>
    <li title="prefix-2"><a href="lists.html#prefix-2">prefix/2</a></li>
    <li title="reverse-1"><a href="lists.html#reverse-1">reverse/1</a></li>
    <li title="reverse-2"><a href="lists.html#reverse-2">reverse/2</a></li>
    <li title="search-2"><a href="lists.html#search-2">search/2</a></li>
    <li title="seq-2"><a href="lists.html#seq-2">seq/2</a></li>
    <li title="seq-3"><a href="lists.html#seq-3">seq/3</a></li>
    <li title="sort-1"><a href="lists.html#sort-1">sort/1</a></li>
    <li title="sort-2"><a href="lists.html#sort-2">sort/2</a></li>
    <li title="split-2"><a href="lists.html#split-2">split/2</a></li>
    <li title="splitwith-2"><a href="lists.html#splitwith-2">splitwith/2</a></li>
    <li title="sublist-2"><a href="lists.html#sublist-2">sublist/2</a></li>
    <li title="sublist-3"><a href="lists.html#sublist-3">sublist/3</a></li>
    <li title="subtract-2"><a href="lists.html#subtract-2">subtract/2</a></li>
    <li title="suffix-2"><a href="lists.html#suffix-2">suffix/2</a></li>
    <li title="sum-1"><a href="lists.html#sum-1">sum/1</a></li>
    <li title="takewhile-2"><a href="lists.html#takewhile-2">takewhile/2</a></li>
    <li title="ukeymerge-3"><a href="lists.html#ukeymerge-3">ukeymerge/3</a></li>
    <li title="ukeysort-2"><a href="lists.html#ukeysort-2">ukeysort/2</a></li>
    <li title="umerge-1"><a href="lists.html#umerge-1">umerge/1</a></li>
    <li title="umerge-2"><a href="lists.html#umerge-2">umerge/2</a></li>
    <li title="umerge-3"><a href="lists.html#umerge-3">umerge/3</a></li>
    <li title="umerge3-3"><a href="lists.html#umerge3-3">umerge3/3</a></li>
    <li title="unzip-1"><a href="lists.html#unzip-1">unzip/1</a></li>
    <li title="unzip3-1"><a href="lists.html#unzip3-1">unzip3/1</a></li>
    <li title="usort-1"><a href="lists.html#usort-1">usort/1</a></li>
    <li title="usort-2"><a href="lists.html#usort-2">usort/2</a></li>
    <li title="zip-2"><a href="lists.html#zip-2">zip/2</a></li>
    <li title="zip3-3"><a href="lists.html#zip3-3">zip3/3</a></li>
    <li title="zipwith-3"><a href="lists.html#zipwith-3">zipwith/3</a></li>
    <li title="zipwith3-4"><a href="lists.html#zipwith3-4">zipwith3/4</a></li>
    </ul>
</li>
<li id="no" title="log_mf_h " expanded="false">log_mf_h<ul>
<li><a href="log_mf_h.html">
                  Top of manual page
                </a></li>
    <li title="init-3"><a href="log_mf_h.html#init-3">init/3</a></li>
    <li title="init-4"><a href="log_mf_h.html#init-4">init/4</a></li>
    </ul>
</li>
<li id="no" title="maps " expanded="false">maps<ul>
<li><a href="maps.html">
                  Top of manual page
                </a></li>
    <li title="filter-2"><a href="maps.html#filter-2">filter/2</a></li>
    <li title="find-2"><a href="maps.html#find-2">find/2</a></li>
    <li title="fold-3"><a href="maps.html#fold-3">fold/3</a></li>
    <li title="from_list-1"><a href="maps.html#from_list-1">from_list/1</a></li>
    <li title="get-2"><a href="maps.html#get-2">get/2</a></li>
    <li title="get-3"><a href="maps.html#get-3">get/3</a></li>
    <li title="is_key-2"><a href="maps.html#is_key-2">is_key/2</a></li>
    <li title="iterator-1"><a href="maps.html#iterator-1">iterator/1</a></li>
    <li title="keys-1"><a href="maps.html#keys-1">keys/1</a></li>
    <li title="map-2"><a href="maps.html#map-2">map/2</a></li>
    <li title="merge-2"><a href="maps.html#merge-2">merge/2</a></li>
    <li title="new-0"><a href="maps.html#new-0">new/0</a></li>
    <li title="next-1"><a href="maps.html#next-1">next/1</a></li>
    <li title="put-3"><a href="maps.html#put-3">put/3</a></li>
    <li title="remove-2"><a href="maps.html#remove-2">remove/2</a></li>
    <li title="size-1"><a href="maps.html#size-1">size/1</a></li>
    <li title="take-2"><a href="maps.html#take-2">take/2</a></li>
    <li title="to_list-1"><a href="maps.html#to_list-1">to_list/1</a></li>
    <li title="update-3"><a href="maps.html#update-3">update/3</a></li>
    <li title="update_with-3"><a href="maps.html#update_with-3">update_with/3</a></li>
    <li title="update_with-4"><a href="maps.html#update_with-4">update_with/4</a></li>
    <li title="values-1"><a href="maps.html#values-1">values/1</a></li>
    <li title="with-2"><a href="maps.html#with-2">with/2</a></li>
    <li title="without-2"><a href="maps.html#without-2">without/2</a></li>
    </ul>
</li>
<li id="no" title="math " expanded="false">math<ul>
<li><a href="math.html">
                  Top of manual page
                </a></li>
    <li title="acos-1"><a href="math.html#acos-1">acos/1</a></li>
    <li title="acosh-1"><a href="math.html#acosh-1">acosh/1</a></li>
    <li title="asin-1"><a href="math.html#asin-1">asin/1</a></li>
    <li title="asinh-1"><a href="math.html#asinh-1">asinh/1</a></li>
    <li title="atan-1"><a href="math.html#atan-1">atan/1</a></li>
    <li title="atan2-2"><a href="math.html#atan2-2">atan2/2</a></li>
    <li title="atanh-1"><a href="math.html#atanh-1">atanh/1</a></li>
    <li title="ceil-1"><a href="math.html#ceil-1">ceil/1</a></li>
    <li title="cos-1"><a href="math.html#cos-1">cos/1</a></li>
    <li title="cosh-1"><a href="math.html#cosh-1">cosh/1</a></li>
    <li title="erf-1"><a href="math.html#erf-1">erf/1</a></li>
    <li title="erfc-1"><a href="math.html#erfc-1">erfc/1</a></li>
    <li title="exp-1"><a href="math.html#exp-1">exp/1</a></li>
    <li title="floor-1"><a href="math.html#floor-1">floor/1</a></li>
    <li title="fmod-2"><a href="math.html#fmod-2">fmod/2</a></li>
    <li title="log-1"><a href="math.html#log-1">log/1</a></li>
    <li title="log10-1"><a href="math.html#log10-1">log10/1</a></li>
    <li title="log2-1"><a href="math.html#log2-1">log2/1</a></li>
    <li title="pi-0"><a href="math.html#pi-0">pi/0</a></li>
    <li title="pow-2"><a href="math.html#pow-2">pow/2</a></li>
    <li title="sin-1"><a href="math.html#sin-1">sin/1</a></li>
    <li title="sinh-1"><a href="math.html#sinh-1">sinh/1</a></li>
    <li title="sqrt-1"><a href="math.html#sqrt-1">sqrt/1</a></li>
    <li title="tan-1"><a href="math.html#tan-1">tan/1</a></li>
    <li title="tanh-1"><a href="math.html#tanh-1">tanh/1</a></li>
    </ul>
</li>
<li id="loadscrollpos" title="ms_transform " expanded="true">ms_transform<ul>
<li><a href="ms_transform.html">
                  Top of manual page
                </a></li>
    <li title="format_error-1"><a href="ms_transform.html#format_error-1">format_error/1</a></li>
    <li title="parse_transform-2"><a href="ms_transform.html#parse_transform-2">parse_transform/2</a></li>
    <li title="transform_from_shell-3"><a href="ms_transform.html#transform_from_shell-3">transform_from_shell/3</a></li>
    </ul>
</li>
<li id="no" title="orddict " expanded="false">orddict<ul>
<li><a href="orddict.html">
                  Top of manual page
                </a></li>
    <li title="append-3"><a href="orddict.html#append-3">append/3</a></li>
    <li title="append_list-3"><a href="orddict.html#append_list-3">append_list/3</a></li>
    <li title="erase-2"><a href="orddict.html#erase-2">erase/2</a></li>
    <li title="fetch-2"><a href="orddict.html#fetch-2">fetch/2</a></li>
    <li title="fetch_keys-1"><a href="orddict.html#fetch_keys-1">fetch_keys/1</a></li>
    <li title="filter-2"><a href="orddict.html#filter-2">filter/2</a></li>
    <li title="find-2"><a href="orddict.html#find-2">find/2</a></li>
    <li title="fold-3"><a href="orddict.html#fold-3">fold/3</a></li>
    <li title="from_list-1"><a href="orddict.html#from_list-1">from_list/1</a></li>
    <li title="is_empty-1"><a href="orddict.html#is_empty-1">is_empty/1</a></li>
    <li title="is_key-2"><a href="orddict.html#is_key-2">is_key/2</a></li>
    <li title="map-2"><a href="orddict.html#map-2">map/2</a></li>
    <li title="merge-3"><a href="orddict.html#merge-3">merge/3</a></li>
    <li title="new-0"><a href="orddict.html#new-0">new/0</a></li>
    <li title="size-1"><a href="orddict.html#size-1">size/1</a></li>
    <li title="store-3"><a href="orddict.html#store-3">store/3</a></li>
    <li title="take-2"><a href="orddict.html#take-2">take/2</a></li>
    <li title="to_list-1"><a href="orddict.html#to_list-1">to_list/1</a></li>
    <li title="update-3"><a href="orddict.html#update-3">update/3</a></li>
    <li title="update-4"><a href="orddict.html#update-4">update/4</a></li>
    <li title="update_counter-3"><a href="orddict.html#update_counter-3">update_counter/3</a></li>
    </ul>
</li>
<li id="no" title="ordsets " expanded="false">ordsets<ul>
<li><a href="ordsets.html">
                  Top of manual page
                </a></li>
    <li title="add_element-2"><a href="ordsets.html#add_element-2">add_element/2</a></li>
    <li title="del_element-2"><a href="ordsets.html#del_element-2">del_element/2</a></li>
    <li title="filter-2"><a href="ordsets.html#filter-2">filter/2</a></li>
    <li title="fold-3"><a href="ordsets.html#fold-3">fold/3</a></li>
    <li title="from_list-1"><a href="ordsets.html#from_list-1">from_list/1</a></li>
    <li title="intersection-1"><a href="ordsets.html#intersection-1">intersection/1</a></li>
    <li title="intersection-2"><a href="ordsets.html#intersection-2">intersection/2</a></li>
    <li title="is_disjoint-2"><a href="ordsets.html#is_disjoint-2">is_disjoint/2</a></li>
    <li title="is_element-2"><a href="ordsets.html#is_element-2">is_element/2</a></li>
    <li title="is_empty-1"><a href="ordsets.html#is_empty-1">is_empty/1</a></li>
    <li title="is_set-1"><a href="ordsets.html#is_set-1">is_set/1</a></li>
    <li title="is_subset-2"><a href="ordsets.html#is_subset-2">is_subset/2</a></li>
    <li title="new-0"><a href="ordsets.html#new-0">new/0</a></li>
    <li title="size-1"><a href="ordsets.html#size-1">size/1</a></li>
    <li title="subtract-2"><a href="ordsets.html#subtract-2">subtract/2</a></li>
    <li title="to_list-1"><a href="ordsets.html#to_list-1">to_list/1</a></li>
    <li title="union-1"><a href="ordsets.html#union-1">union/1</a></li>
    <li title="union-2"><a href="ordsets.html#union-2">union/2</a></li>
    </ul>
</li>
<li id="no" title="pool " expanded="false">pool<ul>
<li><a href="pool.html">
                  Top of manual page
                </a></li>
    <li title="attach-1"><a href="pool.html#attach-1">attach/1</a></li>
    <li title="get_node-0"><a href="pool.html#get_node-0">get_node/0</a></li>
    <li title="get_nodes-0"><a href="pool.html#get_nodes-0">get_nodes/0</a></li>
    <li title="pspawn-3"><a href="pool.html#pspawn-3">pspawn/3</a></li>
    <li title="pspawn_link-3"><a href="pool.html#pspawn_link-3">pspawn_link/3</a></li>
    <li title="start-1"><a href="pool.html#start-1">start/1</a></li>
    <li title="start-2"><a href="pool.html#start-2">start/2</a></li>
    <li title="stop-0"><a href="pool.html#stop-0">stop/0</a></li>
    </ul>
</li>
<li id="no" title="proc_lib " expanded="false">proc_lib<ul>
<li><a href="proc_lib.html">
                  Top of manual page
                </a></li>
    <li title="format-1"><a href="proc_lib.html#format-1">format/1</a></li>
    <li title="format-2"><a href="proc_lib.html#format-2">format/2</a></li>
    <li title="format-3"><a href="proc_lib.html#format-3">format/3</a></li>
    <li title="hibernate-3"><a href="proc_lib.html#hibernate-3">hibernate/3</a></li>
    <li title="init_ack-1"><a href="proc_lib.html#init_ack-1">init_ack/1</a></li>
    <li title="init_ack-2"><a href="proc_lib.html#init_ack-2">init_ack/2</a></li>
    <li title="initial_call-1"><a href="proc_lib.html#initial_call-1">initial_call/1</a></li>
    <li title="spawn-1"><a href="proc_lib.html#spawn-1">spawn/1</a></li>
    <li title="spawn-2"><a href="proc_lib.html#spawn-2">spawn/2</a></li>
    <li title="spawn-3"><a href="proc_lib.html#spawn-3">spawn/3</a></li>
    <li title="spawn-4"><a href="proc_lib.html#spawn-4">spawn/4</a></li>
    <li title="spawn_link-1"><a href="proc_lib.html#spawn_link-1">spawn_link/1</a></li>
    <li title="spawn_link-2"><a href="proc_lib.html#spawn_link-2">spawn_link/2</a></li>
    <li title="spawn_link-3"><a href="proc_lib.html#spawn_link-3">spawn_link/3</a></li>
    <li title="spawn_link-4"><a href="proc_lib.html#spawn_link-4">spawn_link/4</a></li>
    <li title="spawn_opt-2"><a href="proc_lib.html#spawn_opt-2">spawn_opt/2</a></li>
    <li title="spawn_opt-3"><a href="proc_lib.html#spawn_opt-3">spawn_opt/3</a></li>
    <li title="spawn_opt-4"><a href="proc_lib.html#spawn_opt-4">spawn_opt/4</a></li>
    <li title="spawn_opt-5"><a href="proc_lib.html#spawn_opt-5">spawn_opt/5</a></li>
    <li title="start-3"><a href="proc_lib.html#start-3">start/3</a></li>
    <li title="start-4"><a href="proc_lib.html#start-4">start/4</a></li>
    <li title="start-5"><a href="proc_lib.html#start-5">start/5</a></li>
    <li title="start_link-3"><a href="proc_lib.html#start_link-3">start_link/3</a></li>
    <li title="start_link-4"><a href="proc_lib.html#start_link-4">start_link/4</a></li>
    <li title="start_link-5"><a href="proc_lib.html#start_link-5">start_link/5</a></li>
    <li title="stop-1"><a href="proc_lib.html#stop-1">stop/1</a></li>
    <li title="stop-3"><a href="proc_lib.html#stop-3">stop/3</a></li>
    <li title="translate_initial_call-1"><a href="proc_lib.html#translate_initial_call-1">translate_initial_call/1</a></li>
    </ul>
</li>
<li id="no" title="proplists " expanded="false">proplists<ul>
<li><a href="proplists.html">
                  Top of manual page
                </a></li>
    <li title="append_values-2"><a href="proplists.html#append_values-2">append_values/2</a></li>
    <li title="compact-1"><a href="proplists.html#compact-1">compact/1</a></li>
    <li title="delete-2"><a href="proplists.html#delete-2">delete/2</a></li>
    <li title="expand-2"><a href="proplists.html#expand-2">expand/2</a></li>
    <li title="get_all_values-2"><a href="proplists.html#get_all_values-2">get_all_values/2</a></li>
    <li title="get_bool-2"><a href="proplists.html#get_bool-2">get_bool/2</a></li>
    <li title="get_keys-1"><a href="proplists.html#get_keys-1">get_keys/1</a></li>
    <li title="get_value-2"><a href="proplists.html#get_value-2">get_value/2</a></li>
    <li title="get_value-3"><a href="proplists.html#get_value-3">get_value/3</a></li>
    <li title="is_defined-2"><a href="proplists.html#is_defined-2">is_defined/2</a></li>
    <li title="lookup-2"><a href="proplists.html#lookup-2">lookup/2</a></li>
    <li title="lookup_all-2"><a href="proplists.html#lookup_all-2">lookup_all/2</a></li>
    <li title="normalize-2"><a href="proplists.html#normalize-2">normalize/2</a></li>
    <li title="property-1"><a href="proplists.html#property-1">property/1</a></li>
    <li title="property-2"><a href="proplists.html#property-2">property/2</a></li>
    <li title="split-2"><a href="proplists.html#split-2">split/2</a></li>
    <li title="substitute_aliases-2"><a href="proplists.html#substitute_aliases-2">substitute_aliases/2</a></li>
    <li title="substitute_negations-2"><a href="proplists.html#substitute_negations-2">substitute_negations/2</a></li>
    <li title="unfold-1"><a href="proplists.html#unfold-1">unfold/1</a></li>
    </ul>
</li>
<li id="no" title="qlc " expanded="false">qlc<ul>
<li><a href="qlc.html">
                  Top of manual page
                </a></li>
    <li title="append-1"><a href="qlc.html#append-1">append/1</a></li>
    <li title="append-2"><a href="qlc.html#append-2">append/2</a></li>
    <li title="cursor-1"><a href="qlc.html#cursor-1">cursor/1</a></li>
    <li title="cursor-2"><a href="qlc.html#cursor-2">cursor/2</a></li>
    <li title="delete_cursor-1"><a href="qlc.html#delete_cursor-1">delete_cursor/1</a></li>
    <li title="e-1"><a href="qlc.html#e-1">e/1</a></li>
    <li title="e-2"><a href="qlc.html#e-2">e/2</a></li>
    <li title="eval-1"><a href="qlc.html#eval-1">eval/1</a></li>
    <li title="eval-2"><a href="qlc.html#eval-2">eval/2</a></li>
    <li title="fold-3"><a href="qlc.html#fold-3">fold/3</a></li>
    <li title="fold-4"><a href="qlc.html#fold-4">fold/4</a></li>
    <li title="format_error-1"><a href="qlc.html#format_error-1">format_error/1</a></li>
    <li title="info-1"><a href="qlc.html#info-1">info/1</a></li>
    <li title="info-2"><a href="qlc.html#info-2">info/2</a></li>
    <li title="keysort-2"><a href="qlc.html#keysort-2">keysort/2</a></li>
    <li title="keysort-3"><a href="qlc.html#keysort-3">keysort/3</a></li>
    <li title="next_answers-1"><a href="qlc.html#next_answers-1">next_answers/1</a></li>
    <li title="next_answers-2"><a href="qlc.html#next_answers-2">next_answers/2</a></li>
    <li title="q-1"><a href="qlc.html#q-1">q/1</a></li>
    <li title="q-2"><a href="qlc.html#q-2">q/2</a></li>
    <li title="sort-1"><a href="qlc.html#sort-1">sort/1</a></li>
    <li title="sort-2"><a href="qlc.html#sort-2">sort/2</a></li>
    <li title="string_to_handle-1"><a href="qlc.html#string_to_handle-1">string_to_handle/1</a></li>
    <li title="string_to_handle-2"><a href="qlc.html#string_to_handle-2">string_to_handle/2</a></li>
    <li title="string_to_handle-3"><a href="qlc.html#string_to_handle-3">string_to_handle/3</a></li>
    <li title="table-2"><a href="qlc.html#table-2">table/2</a></li>
    </ul>
</li>
<li id="no" title="queue " expanded="false">queue<ul>
<li><a href="queue.html">
                  Top of manual page
                </a></li>
    <li title="cons-2"><a href="queue.html#cons-2">cons/2</a></li>
    <li title="daeh-1"><a href="queue.html#daeh-1">daeh/1</a></li>
    <li title="drop-1"><a href="queue.html#drop-1">drop/1</a></li>
    <li title="drop_r-1"><a href="queue.html#drop_r-1">drop_r/1</a></li>
    <li title="filter-2"><a href="queue.html#filter-2">filter/2</a></li>
    <li title="from_list-1"><a href="queue.html#from_list-1">from_list/1</a></li>
    <li title="get-1"><a href="queue.html#get-1">get/1</a></li>
    <li title="get_r-1"><a href="queue.html#get_r-1">get_r/1</a></li>
    <li title="head-1"><a href="queue.html#head-1">head/1</a></li>
    <li title="in-2"><a href="queue.html#in-2">in/2</a></li>
    <li title="in_r-2"><a href="queue.html#in_r-2">in_r/2</a></li>
    <li title="init-1"><a href="queue.html#init-1">init/1</a></li>
    <li title="is_empty-1"><a href="queue.html#is_empty-1">is_empty/1</a></li>
    <li title="is_queue-1"><a href="queue.html#is_queue-1">is_queue/1</a></li>
    <li title="join-2"><a href="queue.html#join-2">join/2</a></li>
    <li title="lait-1"><a href="queue.html#lait-1">lait/1</a></li>
    <li title="last-1"><a href="queue.html#last-1">last/1</a></li>
    <li title="len-1"><a href="queue.html#len-1">len/1</a></li>
    <li title="liat-1"><a href="queue.html#liat-1">liat/1</a></li>
    <li title="member-2"><a href="queue.html#member-2">member/2</a></li>
    <li title="new-0"><a href="queue.html#new-0">new/0</a></li>
    <li title="out-1"><a href="queue.html#out-1">out/1</a></li>
    <li title="out_r-1"><a href="queue.html#out_r-1">out_r/1</a></li>
    <li title="peek-1"><a href="queue.html#peek-1">peek/1</a></li>
    <li title="peek_r-1"><a href="queue.html#peek_r-1">peek_r/1</a></li>
    <li title="reverse-1"><a href="queue.html#reverse-1">reverse/1</a></li>
    <li title="snoc-2"><a href="queue.html#snoc-2">snoc/2</a></li>
    <li title="split-2"><a href="queue.html#split-2">split/2</a></li>
    <li title="tail-1"><a href="queue.html#tail-1">tail/1</a></li>
    <li title="to_list-1"><a href="queue.html#to_list-1">to_list/1</a></li>
    </ul>
</li>
<li id="no" title="rand " expanded="false">rand<ul>
<li><a href="rand.html">
                  Top of manual page
                </a></li>
    <li title="export_seed-0"><a href="rand.html#export_seed-0">export_seed/0</a></li>
    <li title="export_seed_s-1"><a href="rand.html#export_seed_s-1">export_seed_s/1</a></li>
    <li title="jump-0"><a href="rand.html#jump-0">jump/0</a></li>
    <li title="jump-1"><a href="rand.html#jump-1">jump/1</a></li>
    <li title="normal-0"><a href="rand.html#normal-0">normal/0</a></li>
    <li title="normal-2"><a href="rand.html#normal-2">normal/2</a></li>
    <li title="normal_s-1"><a href="rand.html#normal_s-1">normal_s/1</a></li>
    <li title="normal_s-3"><a href="rand.html#normal_s-3">normal_s/3</a></li>
    <li title="seed-1"><a href="rand.html#seed-1">seed/1</a></li>
    <li title="seed-2"><a href="rand.html#seed-2">seed/2</a></li>
    <li title="seed_s-1"><a href="rand.html#seed_s-1">seed_s/1</a></li>
    <li title="seed_s-2"><a href="rand.html#seed_s-2">seed_s/2</a></li>
    <li title="uniform-0"><a href="rand.html#uniform-0">uniform/0</a></li>
    <li title="uniform-1"><a href="rand.html#uniform-1">uniform/1</a></li>
    <li title="uniform_real-0"><a href="rand.html#uniform_real-0">uniform_real/0</a></li>
    <li title="uniform_real_s-1"><a href="rand.html#uniform_real_s-1">uniform_real_s/1</a></li>
    <li title="uniform_s-1"><a href="rand.html#uniform_s-1">uniform_s/1</a></li>
    <li title="uniform_s-2"><a href="rand.html#uniform_s-2">uniform_s/2</a></li>
    </ul>
</li>
<li id="no" title="random " expanded="false">random<ul>
<li><a href="random.html">
                  Top of manual page
                </a></li>
    <li title="seed-0"><a href="random.html#seed-0">seed/0</a></li>
    <li title="seed-1"><a href="random.html#seed-1">seed/1</a></li>
    <li title="seed-3"><a href="random.html#seed-3">seed/3</a></li>
    <li title="seed0-0"><a href="random.html#seed0-0">seed0/0</a></li>
    <li title="uniform-0"><a href="random.html#uniform-0">uniform/0</a></li>
    <li title="uniform-1"><a href="random.html#uniform-1">uniform/1</a></li>
    <li title="uniform_s-1"><a href="random.html#uniform_s-1">uniform_s/1</a></li>
    <li title="uniform_s-2"><a href="random.html#uniform_s-2">uniform_s/2</a></li>
    </ul>
</li>
<li id="no" title="re " expanded="false">re<ul>
<li><a href="re.html">
                  Top of manual page
                </a></li>
    <li title="compile-1"><a href="re.html#compile-1">compile/1</a></li>
    <li title="compile-2"><a href="re.html#compile-2">compile/2</a></li>
    <li title="inspect-2"><a href="re.html#inspect-2">inspect/2</a></li>
    <li title="replace-3"><a href="re.html#replace-3">replace/3</a></li>
    <li title="replace-4"><a href="re.html#replace-4">replace/4</a></li>
    <li title="run-2"><a href="re.html#run-2">run/2</a></li>
    <li title="run-3"><a href="re.html#run-3">run/3</a></li>
    <li title="split-2"><a href="re.html#split-2">split/2</a></li>
    <li title="split-3"><a href="re.html#split-3">split/3</a></li>
    <li title="version-0"><a href="re.html#version-0">version/0</a></li>
    </ul>
</li>
<li id="no" title="sets " expanded="false">sets<ul>
<li><a href="sets.html">
                  Top of manual page
                </a></li>
    <li title="add_element-2"><a href="sets.html#add_element-2">add_element/2</a></li>
    <li title="del_element-2"><a href="sets.html#del_element-2">del_element/2</a></li>
    <li title="filter-2"><a href="sets.html#filter-2">filter/2</a></li>
    <li title="fold-3"><a href="sets.html#fold-3">fold/3</a></li>
    <li title="from_list-1"><a href="sets.html#from_list-1">from_list/1</a></li>
    <li title="intersection-1"><a href="sets.html#intersection-1">intersection/1</a></li>
    <li title="intersection-2"><a href="sets.html#intersection-2">intersection/2</a></li>
    <li title="is_disjoint-2"><a href="sets.html#is_disjoint-2">is_disjoint/2</a></li>
    <li title="is_element-2"><a href="sets.html#is_element-2">is_element/2</a></li>
    <li title="is_empty-1"><a href="sets.html#is_empty-1">is_empty/1</a></li>
    <li title="is_set-1"><a href="sets.html#is_set-1">is_set/1</a></li>
    <li title="is_subset-2"><a href="sets.html#is_subset-2">is_subset/2</a></li>
    <li title="new-0"><a href="sets.html#new-0">new/0</a></li>
    <li title="size-1"><a href="sets.html#size-1">size/1</a></li>
    <li title="subtract-2"><a href="sets.html#subtract-2">subtract/2</a></li>
    <li title="to_list-1"><a href="sets.html#to_list-1">to_list/1</a></li>
    <li title="union-1"><a href="sets.html#union-1">union/1</a></li>
    <li title="union-2"><a href="sets.html#union-2">union/2</a></li>
    </ul>
</li>
<li id="no" title="shell " expanded="false">shell<ul>
<li><a href="shell.html">
                  Top of manual page
                </a></li>
    <li title="catch_exception-1"><a href="shell.html#catch_exception-1">catch_exception/1</a></li>
    <li title="history-1"><a href="shell.html#history-1">history/1</a></li>
    <li title="prompt_func-1"><a href="shell.html#prompt_func-1">prompt_func/1</a></li>
    <li title="results-1"><a href="shell.html#results-1">results/1</a></li>
    <li title="start_restricted-1"><a href="shell.html#start_restricted-1">start_restricted/1</a></li>
    <li title="stop_restricted-0"><a href="shell.html#stop_restricted-0">stop_restricted/0</a></li>
    <li title="strings-1"><a href="shell.html#strings-1">strings/1</a></li>
    </ul>
</li>
<li title="shell_default"><a href="shell_default.html">shell_default</a></li>
<li id="no" title="slave " expanded="false">slave<ul>
<li><a href="slave.html">
                  Top of manual page
                </a></li>
    <li title="pseudo-1"><a href="slave.html#pseudo-1">pseudo/1</a></li>
    <li title="pseudo-2"><a href="slave.html#pseudo-2">pseudo/2</a></li>
    <li title="relay-1"><a href="slave.html#relay-1">relay/1</a></li>
    <li title="start-1"><a href="slave.html#start-1">start/1</a></li>
    <li title="start-2"><a href="slave.html#start-2">start/2</a></li>
    <li title="start-3"><a href="slave.html#start-3">start/3</a></li>
    <li title="start_link-1"><a href="slave.html#start_link-1">start_link/1</a></li>
    <li title="start_link-2"><a href="slave.html#start_link-2">start_link/2</a></li>
    <li title="start_link-3"><a href="slave.html#start_link-3">start_link/3</a></li>
    <li title="stop-1"><a href="slave.html#stop-1">stop/1</a></li>
    </ul>
</li>
<li id="no" title="sofs " expanded="false">sofs<ul>
<li><a href="sofs.html">
                  Top of manual page
                </a></li>
    <li title="a_function-1"><a href="sofs.html#a_function-1">a_function/1</a></li>
    <li title="a_function-2"><a href="sofs.html#a_function-2">a_function/2</a></li>
    <li title="canonical_relation-1"><a href="sofs.html#canonical_relation-1">canonical_relation/1</a></li>
    <li title="composite-2"><a href="sofs.html#composite-2">composite/2</a></li>
    <li title="constant_function-2"><a href="sofs.html#constant_function-2">constant_function/2</a></li>
    <li title="converse-1"><a href="sofs.html#converse-1">converse/1</a></li>
    <li title="difference-2"><a href="sofs.html#difference-2">difference/2</a></li>
    <li title="digraph_to_family-1"><a href="sofs.html#digraph_to_family-1">digraph_to_family/1</a></li>
    <li title="digraph_to_family-2"><a href="sofs.html#digraph_to_family-2">digraph_to_family/2</a></li>
    <li title="domain-1"><a href="sofs.html#domain-1">domain/1</a></li>
    <li title="drestriction-2"><a href="sofs.html#drestriction-2">drestriction/2</a></li>
    <li title="drestriction-3"><a href="sofs.html#drestriction-3">drestriction/3</a></li>
    <li title="empty_set-0"><a href="sofs.html#empty_set-0">empty_set/0</a></li>
    <li title="extension-3"><a href="sofs.html#extension-3">extension/3</a></li>
    <li title="family-1"><a href="sofs.html#family-1">family/1</a></li>
    <li title="family-2"><a href="sofs.html#family-2">family/2</a></li>
    <li title="family_difference-2"><a href="sofs.html#family_difference-2">family_difference/2</a></li>
    <li title="family_domain-1"><a href="sofs.html#family_domain-1">family_domain/1</a></li>
    <li title="family_field-1"><a href="sofs.html#family_field-1">family_field/1</a></li>
    <li title="family_intersection-1"><a href="sofs.html#family_intersection-1">family_intersection/1</a></li>
    <li title="family_intersection-2"><a href="sofs.html#family_intersection-2">family_intersection/2</a></li>
    <li title="family_projection-2"><a href="sofs.html#family_projection-2">family_projection/2</a></li>
    <li title="family_range-1"><a href="sofs.html#family_range-1">family_range/1</a></li>
    <li title="family_specification-2"><a href="sofs.html#family_specification-2">family_specification/2</a></li>
    <li title="family_to_digraph-1"><a href="sofs.html#family_to_digraph-1">family_to_digraph/1</a></li>
    <li title="family_to_digraph-2"><a href="sofs.html#family_to_digraph-2">family_to_digraph/2</a></li>
    <li title="family_to_relation-1"><a href="sofs.html#family_to_relation-1">family_to_relation/1</a></li>
    <li title="family_union-1"><a href="sofs.html#family_union-1">family_union/1</a></li>
    <li title="family_union-2"><a href="sofs.html#family_union-2">family_union/2</a></li>
    <li title="field-1"><a href="sofs.html#field-1">field/1</a></li>
    <li title="from_external-2"><a href="sofs.html#from_external-2">from_external/2</a></li>
    <li title="from_sets-1"><a href="sofs.html#from_sets-1">from_sets/1</a></li>
    <li title="from_term-1"><a href="sofs.html#from_term-1">from_term/1</a></li>
    <li title="from_term-2"><a href="sofs.html#from_term-2">from_term/2</a></li>
    <li title="image-2"><a href="sofs.html#image-2">image/2</a></li>
    <li title="intersection-1"><a href="sofs.html#intersection-1">intersection/1</a></li>
    <li title="intersection-2"><a href="sofs.html#intersection-2">intersection/2</a></li>
    <li title="intersection_of_family-1"><a href="sofs.html#intersection_of_family-1">intersection_of_family/1</a></li>
    <li title="inverse-1"><a href="sofs.html#inverse-1">inverse/1</a></li>
    <li title="inverse_image-2"><a href="sofs.html#inverse_image-2">inverse_image/2</a></li>
    <li title="is_a_function-1"><a href="sofs.html#is_a_function-1">is_a_function/1</a></li>
    <li title="is_disjoint-2"><a href="sofs.html#is_disjoint-2">is_disjoint/2</a></li>
    <li title="is_empty_set-1"><a href="sofs.html#is_empty_set-1">is_empty_set/1</a></li>
    <li title="is_equal-2"><a href="sofs.html#is_equal-2">is_equal/2</a></li>
    <li title="is_set-1"><a href="sofs.html#is_set-1">is_set/1</a></li>
    <li title="is_sofs_set-1"><a href="sofs.html#is_sofs_set-1">is_sofs_set/1</a></li>
    <li title="is_subset-2"><a href="sofs.html#is_subset-2">is_subset/2</a></li>
    <li title="is_type-1"><a href="sofs.html#is_type-1">is_type/1</a></li>
    <li title="join-4"><a href="sofs.html#join-4">join/4</a></li>
    <li title="multiple_relative_product-2"><a href="sofs.html#multiple_relative_product-2">multiple_relative_product/2</a></li>
    <li title="no_elements-1"><a href="sofs.html#no_elements-1">no_elements/1</a></li>
    <li title="partition-1"><a href="sofs.html#partition-1">partition/1</a></li>
    <li title="partition-2"><a href="sofs.html#partition-2">partition/2</a></li>
    <li title="partition-3"><a href="sofs.html#partition-3">partition/3</a></li>
    <li title="partition_family-2"><a href="sofs.html#partition_family-2">partition_family/2</a></li>
    <li title="product-1"><a href="sofs.html#product-1">product/1</a></li>
    <li title="product-2"><a href="sofs.html#product-2">product/2</a></li>
    <li title="projection-2"><a href="sofs.html#projection-2">projection/2</a></li>
    <li title="range-1"><a href="sofs.html#range-1">range/1</a></li>
    <li title="relation-1"><a href="sofs.html#relation-1">relation/1</a></li>
    <li title="relation-2"><a href="sofs.html#relation-2">relation/2</a></li>
    <li title="relation_to_family-1"><a href="sofs.html#relation_to_family-1">relation_to_family/1</a></li>
    <li title="relative_product-1"><a href="sofs.html#relative_product-1">relative_product/1</a></li>
    <li title="relative_product-2"><a href="sofs.html#relative_product-2">relative_product/2</a></li>
    <li title="relative_product1-2"><a href="sofs.html#relative_product1-2">relative_product1/2</a></li>
    <li title="restriction-2"><a href="sofs.html#restriction-2">restriction/2</a></li>
    <li title="restriction-3"><a href="sofs.html#restriction-3">restriction/3</a></li>
    <li title="set-1"><a href="sofs.html#set-1">set/1</a></li>
    <li title="set-2"><a href="sofs.html#set-2">set/2</a></li>
    <li title="specification-2"><a href="sofs.html#specification-2">specification/2</a></li>
    <li title="strict_relation-1"><a href="sofs.html#strict_relation-1">strict_relation/1</a></li>
    <li title="substitution-2"><a href="sofs.html#substitution-2">substitution/2</a></li>
    <li title="symdiff-2"><a href="sofs.html#symdiff-2">symdiff/2</a></li>
    <li title="symmetric_partition-2"><a href="sofs.html#symmetric_partition-2">symmetric_partition/2</a></li>
    <li title="to_external-1"><a href="sofs.html#to_external-1">to_external/1</a></li>
    <li title="to_sets-1"><a href="sofs.html#to_sets-1">to_sets/1</a></li>
    <li title="type-1"><a href="sofs.html#type-1">type/1</a></li>
    <li title="union-1"><a href="sofs.html#union-1">union/1</a></li>
    <li title="union-2"><a href="sofs.html#union-2">union/2</a></li>
    <li title="union_of_family-1"><a href="sofs.html#union_of_family-1">union_of_family/1</a></li>
    <li title="weak_relation-1"><a href="sofs.html#weak_relation-1">weak_relation/1</a></li>
    </ul>
</li>
<li id="no" title="string " expanded="false">string<ul>
<li><a href="string.html">
                  Top of manual page
                </a></li>
    <li title="casefold-1"><a href="string.html#casefold-1">casefold/1</a></li>
    <li title="centre-2"><a href="string.html#centre-2">centre/2</a></li>
    <li title="centre-3"><a href="string.html#centre-3">centre/3</a></li>
    <li title="chars-2"><a href="string.html#chars-2">chars/2</a></li>
    <li title="chars-3"><a href="string.html#chars-3">chars/3</a></li>
    <li title="chomp-1"><a href="string.html#chomp-1">chomp/1</a></li>
    <li title="chr-2"><a href="string.html#chr-2">chr/2</a></li>
    <li title="concat-2"><a href="string.html#concat-2">concat/2</a></li>
    <li title="copies-2"><a href="string.html#copies-2">copies/2</a></li>
    <li title="cspan-2"><a href="string.html#cspan-2">cspan/2</a></li>
    <li title="equal-2"><a href="string.html#equal-2">equal/2</a></li>
    <li title="equal-3"><a href="string.html#equal-3">equal/3</a></li>
    <li title="equal-4"><a href="string.html#equal-4">equal/4</a></li>
    <li title="find-2"><a href="string.html#find-2">find/2</a></li>
    <li title="find-3"><a href="string.html#find-3">find/3</a></li>
    <li title="is_empty-1"><a href="string.html#is_empty-1">is_empty/1</a></li>
    <li title="join-2"><a href="string.html#join-2">join/2</a></li>
    <li title="left-2"><a href="string.html#left-2">left/2</a></li>
    <li title="left-3"><a href="string.html#left-3">left/3</a></li>
    <li title="len-1"><a href="string.html#len-1">len/1</a></li>
    <li title="length-1"><a href="string.html#length-1">length/1</a></li>
    <li title="lexemes-2"><a href="string.html#lexemes-2">lexemes/2</a></li>
    <li title="lowercase-1"><a href="string.html#lowercase-1">lowercase/1</a></li>
    <li title="next_codepoint-1"><a href="string.html#next_codepoint-1">next_codepoint/1</a></li>
    <li title="next_grapheme-1"><a href="string.html#next_grapheme-1">next_grapheme/1</a></li>
    <li title="nth_lexeme-3"><a href="string.html#nth_lexeme-3">nth_lexeme/3</a></li>
    <li title="pad-2"><a href="string.html#pad-2">pad/2</a></li>
    <li title="pad-3"><a href="string.html#pad-3">pad/3</a></li>
    <li title="pad-4"><a href="string.html#pad-4">pad/4</a></li>
    <li title="prefix-2"><a href="string.html#prefix-2">prefix/2</a></li>
    <li title="rchr-2"><a href="string.html#rchr-2">rchr/2</a></li>
    <li title="replace-3"><a href="string.html#replace-3">replace/3</a></li>
    <li title="replace-4"><a href="string.html#replace-4">replace/4</a></li>
    <li title="reverse-1"><a href="string.html#reverse-1">reverse/1</a></li>
    <li title="right-2"><a href="string.html#right-2">right/2</a></li>
    <li title="right-3"><a href="string.html#right-3">right/3</a></li>
    <li title="rstr-2"><a href="string.html#rstr-2">rstr/2</a></li>
    <li title="slice-2"><a href="string.html#slice-2">slice/2</a></li>
    <li title="slice-3"><a href="string.html#slice-3">slice/3</a></li>
    <li title="span-2"><a href="string.html#span-2">span/2</a></li>
    <li title="split-2"><a href="string.html#split-2">split/2</a></li>
    <li title="split-3"><a href="string.html#split-3">split/3</a></li>
    <li title="str-2"><a href="string.html#str-2">str/2</a></li>
    <li title="strip-1"><a href="string.html#strip-1">strip/1</a></li>
    <li title="strip-2"><a href="string.html#strip-2">strip/2</a></li>
    <li title="strip-3"><a href="string.html#strip-3">strip/3</a></li>
    <li title="sub_string-2"><a href="string.html#sub_string-2">sub_string/2</a></li>
    <li title="sub_string-3"><a href="string.html#sub_string-3">sub_string/3</a></li>
    <li title="sub_word-2"><a href="string.html#sub_word-2">sub_word/2</a></li>
    <li title="sub_word-3"><a href="string.html#sub_word-3">sub_word/3</a></li>
    <li title="substr-2"><a href="string.html#substr-2">substr/2</a></li>
    <li title="substr-3"><a href="string.html#substr-3">substr/3</a></li>
    <li title="take-2"><a href="string.html#take-2">take/2</a></li>
    <li title="take-3"><a href="string.html#take-3">take/3</a></li>
    <li title="take-4"><a href="string.html#take-4">take/4</a></li>
    <li title="titlecase-1"><a href="string.html#titlecase-1">titlecase/1</a></li>
    <li title="to_float-1"><a href="string.html#to_float-1">to_float/1</a></li>
    <li title="to_graphemes-1"><a href="string.html#to_graphemes-1">to_graphemes/1</a></li>
    <li title="to_integer-1"><a href="string.html#to_integer-1">to_integer/1</a></li>
    <li title="to_lower-1"><a href="string.html#to_lower-1">to_lower/1</a></li>
    <li title="to_upper-1"><a href="string.html#to_upper-1">to_upper/1</a></li>
    <li title="tokens-2"><a href="string.html#tokens-2">tokens/2</a></li>
    <li title="trim-1"><a href="string.html#trim-1">trim/1</a></li>
    <li title="trim-2"><a href="string.html#trim-2">trim/2</a></li>
    <li title="trim-3"><a href="string.html#trim-3">trim/3</a></li>
    <li title="uppercase-1"><a href="string.html#uppercase-1">uppercase/1</a></li>
    <li title="words-1"><a href="string.html#words-1">words/1</a></li>
    <li title="words-2"><a href="string.html#words-2">words/2</a></li>
    </ul>
</li>
<li id="no" title="supervisor " expanded="false">supervisor<ul>
<li><a href="supervisor.html">
                  Top of manual page
                </a></li>
    <li title="check_childspecs-1"><a href="supervisor.html#check_childspecs-1">check_childspecs/1</a></li>
    <li title="count_children-1"><a href="supervisor.html#count_children-1">count_children/1</a></li>
    <li title="delete_child-2"><a href="supervisor.html#delete_child-2">delete_child/2</a></li>
    <li title="get_childspec-2"><a href="supervisor.html#get_childspec-2">get_childspec/2</a></li>
    <li title="restart_child-2"><a href="supervisor.html#restart_child-2">restart_child/2</a></li>
    <li title="start_child-2"><a href="supervisor.html#start_child-2">start_child/2</a></li>
    <li title="start_link-2"><a href="supervisor.html#start_link-2">start_link/2</a></li>
    <li title="start_link-3"><a href="supervisor.html#start_link-3">start_link/3</a></li>
    <li title="terminate_child-2"><a href="supervisor.html#terminate_child-2">terminate_child/2</a></li>
    <li title="which_children-1"><a href="supervisor.html#which_children-1">which_children/1</a></li>
    <li title="Module:init-1"><a href="supervisor.html#Module:init-1">Module:init/1</a></li>
    </ul>
</li>
<li id="no" title="supervisor_bridge " expanded="false">supervisor_bridge<ul>
<li><a href="supervisor_bridge.html">
                  Top of manual page
                </a></li>
    <li title="start_link-2"><a href="supervisor_bridge.html#start_link-2">start_link/2</a></li>
    <li title="start_link-3"><a href="supervisor_bridge.html#start_link-3">start_link/3</a></li>
    <li title="Module:init-1"><a href="supervisor_bridge.html#Module:init-1">Module:init/1</a></li>
    <li title="Module:terminate-2"><a href="supervisor_bridge.html#Module:terminate-2">Module:terminate/2</a></li>
    </ul>
</li>
<li id="no" title="sys " expanded="false">sys<ul>
<li><a href="sys.html">
                  Top of manual page
                </a></li>
    <li title="change_code-4"><a href="sys.html#change_code-4">change_code/4</a></li>
    <li title="change_code-5"><a href="sys.html#change_code-5">change_code/5</a></li>
    <li title="debug_options-1"><a href="sys.html#debug_options-1">debug_options/1</a></li>
    <li title="get_debug-3"><a href="sys.html#get_debug-3">get_debug/3</a></li>
    <li title="get_state-1"><a href="sys.html#get_state-1">get_state/1</a></li>
    <li title="get_state-2"><a href="sys.html#get_state-2">get_state/2</a></li>
    <li title="get_status-1"><a href="sys.html#get_status-1">get_status/1</a></li>
    <li title="get_status-2"><a href="sys.html#get_status-2">get_status/2</a></li>
    <li title="handle_debug-4"><a href="sys.html#handle_debug-4">handle_debug/4</a></li>
    <li title="handle_system_msg-6"><a href="sys.html#handle_system_msg-6">handle_system_msg/6</a></li>
    <li title="install-2"><a href="sys.html#install-2">install/2</a></li>
    <li title="install-3"><a href="sys.html#install-3">install/3</a></li>
    <li title="log-2"><a href="sys.html#log-2">log/2</a></li>
    <li title="log-3"><a href="sys.html#log-3">log/3</a></li>
    <li title="log_to_file-2"><a href="sys.html#log_to_file-2">log_to_file/2</a></li>
    <li title="log_to_file-3"><a href="sys.html#log_to_file-3">log_to_file/3</a></li>
    <li title="no_debug-1"><a href="sys.html#no_debug-1">no_debug/1</a></li>
    <li title="no_debug-2"><a href="sys.html#no_debug-2">no_debug/2</a></li>
    <li title="print_log-1"><a href="sys.html#print_log-1">print_log/1</a></li>
    <li title="remove-2"><a href="sys.html#remove-2">remove/2</a></li>
    <li title="remove-3"><a href="sys.html#remove-3">remove/3</a></li>
    <li title="replace_state-2"><a href="sys.html#replace_state-2">replace_state/2</a></li>
    <li title="replace_state-3"><a href="sys.html#replace_state-3">replace_state/3</a></li>
    <li title="resume-1"><a href="sys.html#resume-1">resume/1</a></li>
    <li title="resume-2"><a href="sys.html#resume-2">resume/2</a></li>
    <li title="statistics-2"><a href="sys.html#statistics-2">statistics/2</a></li>
    <li title="statistics-3"><a href="sys.html#statistics-3">statistics/3</a></li>
    <li title="suspend-1"><a href="sys.html#suspend-1">suspend/1</a></li>
    <li title="suspend-2"><a href="sys.html#suspend-2">suspend/2</a></li>
    <li title="terminate-2"><a href="sys.html#terminate-2">terminate/2</a></li>
    <li title="terminate-3"><a href="sys.html#terminate-3">terminate/3</a></li>
    <li title="trace-2"><a href="sys.html#trace-2">trace/2</a></li>
    <li title="trace-3"><a href="sys.html#trace-3">trace/3</a></li>
    <li title="Module:system_code_change-4"><a href="sys.html#Module:system_code_change-4">Module:system_code_change/4</a></li>
    <li title="Module:system_continue-3"><a href="sys.html#Module:system_continue-3">Module:system_continue/3</a></li>
    <li title="Module:system_get_state-1"><a href="sys.html#Module:system_get_state-1">Module:system_get_state/1</a></li>
    <li title="Module:system_replace_state-2"><a href="sys.html#Module:system_replace_state-2">Module:system_replace_state/2</a></li>
    <li title="Module:system_terminate-4"><a href="sys.html#Module:system_terminate-4">Module:system_terminate/4</a></li>
    </ul>
</li>
<li id="no" title="timer " expanded="false">timer<ul>
<li><a href="timer.html">
                  Top of manual page
                </a></li>
    <li title="apply_after-4"><a href="timer.html#apply_after-4">apply_after/4</a></li>
    <li title="apply_interval-4"><a href="timer.html#apply_interval-4">apply_interval/4</a></li>
    <li title="cancel-1"><a href="timer.html#cancel-1">cancel/1</a></li>
    <li title="exit_after-2"><a href="timer.html#exit_after-2">exit_after/2</a></li>
    <li title="exit_after-3"><a href="timer.html#exit_after-3">exit_after/3</a></li>
    <li title="hms-3"><a href="timer.html#hms-3">hms/3</a></li>
    <li title="hours-1"><a href="timer.html#hours-1">hours/1</a></li>
    <li title="kill_after-1"><a href="timer.html#kill_after-1">kill_after/1</a></li>
    <li title="kill_after-2"><a href="timer.html#kill_after-2">kill_after/2</a></li>
    <li title="minutes-1"><a href="timer.html#minutes-1">minutes/1</a></li>
    <li title="now_diff-2"><a href="timer.html#now_diff-2">now_diff/2</a></li>
    <li title="seconds-1"><a href="timer.html#seconds-1">seconds/1</a></li>
    <li title="send_after-2"><a href="timer.html#send_after-2">send_after/2</a></li>
    <li title="send_after-3"><a href="timer.html#send_after-3">send_after/3</a></li>
    <li title="send_interval-2"><a href="timer.html#send_interval-2">send_interval/2</a></li>
    <li title="send_interval-3"><a href="timer.html#send_interval-3">send_interval/3</a></li>
    <li title="sleep-1"><a href="timer.html#sleep-1">sleep/1</a></li>
    <li title="start-0"><a href="timer.html#start-0">start/0</a></li>
    <li title="tc-1"><a href="timer.html#tc-1">tc/1</a></li>
    <li title="tc-2"><a href="timer.html#tc-2">tc/2</a></li>
    <li title="tc-3"><a href="timer.html#tc-3">tc/3</a></li>
    </ul>
</li>
<li id="no" title="unicode " expanded="false">unicode<ul>
<li><a href="unicode.html">
                  Top of manual page
                </a></li>
    <li title="bom_to_encoding-1"><a href="unicode.html#bom_to_encoding-1">bom_to_encoding/1</a></li>
    <li title="characters_to_binary-1"><a href="unicode.html#characters_to_binary-1">characters_to_binary/1</a></li>
    <li title="characters_to_binary-2"><a href="unicode.html#characters_to_binary-2">characters_to_binary/2</a></li>
    <li title="characters_to_binary-3"><a href="unicode.html#characters_to_binary-3">characters_to_binary/3</a></li>
    <li title="characters_to_list-1"><a href="unicode.html#characters_to_list-1">characters_to_list/1</a></li>
    <li title="characters_to_list-2"><a href="unicode.html#characters_to_list-2">characters_to_list/2</a></li>
    <li title="characters_to_nfc_binary-1"><a href="unicode.html#characters_to_nfc_binary-1">characters_to_nfc_binary/1</a></li>
    <li title="characters_to_nfc_list-1"><a href="unicode.html#characters_to_nfc_list-1">characters_to_nfc_list/1</a></li>
    <li title="characters_to_nfd_binary-1"><a href="unicode.html#characters_to_nfd_binary-1">characters_to_nfd_binary/1</a></li>
    <li title="characters_to_nfd_list-1"><a href="unicode.html#characters_to_nfd_list-1">characters_to_nfd_list/1</a></li>
    <li title="characters_to_nfkc_binary-1"><a href="unicode.html#characters_to_nfkc_binary-1">characters_to_nfkc_binary/1</a></li>
    <li title="characters_to_nfkc_list-1"><a href="unicode.html#characters_to_nfkc_list-1">characters_to_nfkc_list/1</a></li>
    <li title="characters_to_nfkd_binary-1"><a href="unicode.html#characters_to_nfkd_binary-1">characters_to_nfkd_binary/1</a></li>
    <li title="characters_to_nfkd_list-1"><a href="unicode.html#characters_to_nfkd_list-1">characters_to_nfkd_list/1</a></li>
    <li title="encoding_to_bom-1"><a href="unicode.html#encoding_to_bom-1">encoding_to_bom/1</a></li>
    </ul>
</li>
<li id="no" title="uri_string " expanded="false">uri_string<ul>
<li><a href="uri_string.html">
                  Top of manual page
                </a></li>
    <li title="compose_query-1"><a href="uri_string.html#compose_query-1">compose_query/1</a></li>
    <li title="compose_query-2"><a href="uri_string.html#compose_query-2">compose_query/2</a></li>
    <li title="dissect_query-1"><a href="uri_string.html#dissect_query-1">dissect_query/1</a></li>
    <li title="normalize-1"><a href="uri_string.html#normalize-1">normalize/1</a></li>
    <li title="normalize-2"><a href="uri_string.html#normalize-2">normalize/2</a></li>
    <li title="parse-1"><a href="uri_string.html#parse-1">parse/1</a></li>
    <li title="recompose-1"><a href="uri_string.html#recompose-1">recompose/1</a></li>
    <li title="transcode-2"><a href="uri_string.html#transcode-2">transcode/2</a></li>
    </ul>
</li>
<li id="no" title="win32reg " expanded="false">win32reg<ul>
<li><a href="win32reg.html">
                  Top of manual page
                </a></li>
    <li title="change_key-2"><a href="win32reg.html#change_key-2">change_key/2</a></li>
    <li title="change_key_create-2"><a href="win32reg.html#change_key_create-2">change_key_create/2</a></li>
    <li title="close-1"><a href="win32reg.html#close-1">close/1</a></li>
    <li title="current_key-1"><a href="win32reg.html#current_key-1">current_key/1</a></li>
    <li title="delete_key-1"><a href="win32reg.html#delete_key-1">delete_key/1</a></li>
    <li title="delete_value-2"><a href="win32reg.html#delete_value-2">delete_value/2</a></li>
    <li title="expand-1"><a href="win32reg.html#expand-1">expand/1</a></li>
    <li title="format_error-1"><a href="win32reg.html#format_error-1">format_error/1</a></li>
    <li title="open-1"><a href="win32reg.html#open-1">open/1</a></li>
    <li title="set_value-3"><a href="win32reg.html#set_value-3">set_value/3</a></li>
    <li title="sub_keys-1"><a href="win32reg.html#sub_keys-1">sub_keys/1</a></li>
    <li title="value-2"><a href="win32reg.html#value-2">value/2</a></li>
    <li title="values-1"><a href="win32reg.html#values-1">values/1</a></li>
    </ul>
</li>
<li id="no" title="zip " expanded="false">zip<ul>
<li><a href="zip.html">
                  Top of manual page
                </a></li>
    <li title="create-2"><a href="zip.html#create-2">create/2</a></li>
    <li title="create-3"><a href="zip.html#create-3">create/3</a></li>
    <li title="extract-1"><a href="zip.html#extract-1">extract/1</a></li>
    <li title="extract-2"><a href="zip.html#extract-2">extract/2</a></li>
    <li title="foldl-3"><a href="zip.html#foldl-3">foldl/3</a></li>
    <li title="list_dir-1"><a href="zip.html#list_dir-1">list_dir/1</a></li>
    <li title="list_dir-2"><a href="zip.html#list_dir-2">list_dir/2</a></li>
    <li title="t-1"><a href="zip.html#t-1">t/1</a></li>
    <li title="table-1"><a href="zip.html#table-1">table/1</a></li>
    <li title="table-2"><a href="zip.html#table-2">table/2</a></li>
    <li title="tt-1"><a href="zip.html#tt-1">tt/1</a></li>
    <li title="unzip-1"><a href="zip.html#unzip-1">unzip/1</a></li>
    <li title="unzip-2"><a href="zip.html#unzip-2">unzip/2</a></li>
    <li title="zip-2"><a href="zip.html#zip-2">zip/2</a></li>
    <li title="zip-3"><a href="zip.html#zip-3">zip/3</a></li>
    <li title="zip_close-1"><a href="zip.html#zip_close-1">zip_close/1</a></li>
    <li title="zip_get-1"><a href="zip.html#zip_get-1">zip_get/1</a></li>
    <li title="zip_get-2"><a href="zip.html#zip_get-2">zip_get/2</a></li>
    <li title="zip_list_dir-1"><a href="zip.html#zip_list_dir-1">zip_list_dir/1</a></li>
    <li title="zip_open-1"><a href="zip.html#zip_open-1">zip_open/1</a></li>
    <li title="zip_open-2"><a href="zip.html#zip_open-2">zip_open/2</a></li>
    </ul>
</li>
</ul>
</div></div>
<div id="content">
<div class="innertube">
<!-- refpage --><center><h1>ms_transform</h1></center>
  
  <h3><span onMouseOver="document.getElementById('ghlink-module-idm281471864320120').style.visibility = 'visible';" onMouseOut="document.getElementById('ghlink-module-idm281471864320120').style.visibility = 'hidden';"><span id="ghlink-module-idm281471864320120"></span><a class="title_link" name="module" href="#module">Module</a></span></h3>
<div class="REFBODY module-body">ms_transform</div>
  <h3><span onMouseOver="document.getElementById('ghlink-module-summary-idm281471864319672').style.visibility = 'visible';" onMouseOut="document.getElementById('ghlink-module-summary-idm281471864319672').style.visibility = 'hidden';"><span id="ghlink-module-summary-idm281471864319672"></span><a class="title_link" name="module-summary" href="#module-summary">Module Summary</a></span></h3>
<div class="REFBODY module-summary-body">A parse transformation that translates fun syntax into match
    specifications.</div>
  <h3><span onMouseOver="document.getElementById('ghlink-description-idm281471864319160').style.visibility = 'visible';" onMouseOut="document.getElementById('ghlink-description-idm281471864319160').style.visibility = 'hidden';"><span id="ghlink-description-idm281471864319160" class="ghlink"><a href="https://github.com/erlang/otp/edit/maint/lib/stdlib/doc/src/ms_transform.xml#L38" title="Found an issue with the documentation? Fix it by clicking here!"><span class="pencil"></span></a></span><a class="title_link" name="description" href="#description">Description</a></span></h3>
<div class="REFBODY description-body"><p>
    <a name="top"></a>
    <p>This module provides the parse transformation that makes calls to
      <span class="bold_code bc-19"><a href="ets.html"><span class="code">ets</span></a></span> and
      <span class="bold_code bc-13"><a href="javascript:erlhref('../../../../doc/../','runtime_tools','dbg.html#fun2ms-1');"><span class="code">dbg:fun2ms/1</span></a></span>
      translate into literal match specifications. It also provides the back end
      for the same functions when called from the Erlang shell.</p>

    <p>The translation from funs to match specifications
      is accessed through the two "pseudo functions"
      <span class="bold_code bc-15"><a href="ets.html#fun2ms-1"><span class="code">ets:fun2ms/1</span></a></span> and
      <span class="bold_code bc-13"><a href="javascript:erlhref('../../../../doc/../','runtime_tools','dbg.html#fun2ms-1');"><span class="code">dbg:fun2ms/1</span></a></span>.</p>

    <p>As everyone trying to use
      <span class="bold_code bc-15"><a href="ets.html#select-1"><span class="code">ets:select/2</span></a></span> or
      <span class="bold_code bc-18"><a href="javascript:erlhref('../../../../doc/../','runtime_tools','dbg.html');"><span class="code">dbg</span></a></span> seems to end up
      reading this manual page, this description is an introduction to the
      concept of match specifications.</p>

    <p>Read the whole manual page if it is the first time you are using
      the transformations.</p>

    <p>Match specifications are used more or less as filters. They resemble
      usual Erlang matching in a list comprehension or in a fun used with
      <span class="bold_code bc-15"><a href="lists.html#foldl-3"><span class="code">lists:foldl/3</span></a></span>, and so on.
      However, the syntax of pure match specifications is awkward, as
      they are made up purely by Erlang terms, and the language has no
      syntax to make the match specifications more readable.</p>

    <p>As the execution and structure of the match specifications are like
      that of a fun, it is more straightforward
      to write it using the familiar fun syntax and to have that
      translated into a match specification automatically. A real fun is
      clearly more powerful than the match specifications allow, but bearing
      the match specifications in mind, and what they can do, it is still
      more convenient to write it all as a fun. This module contains the
      code that translates the fun syntax into match specification
      terms.</p>
  </p></div>

  <h3><span onMouseOver="document.getElementById('ghlink-example-1-idm281471864308408').style.visibility = 'visible';" onMouseOut="document.getElementById('ghlink-example-1-idm281471864308408').style.visibility = 'hidden';"><span id="ghlink-example-1-idm281471864308408" class="ghlink"><a href="https://github.com/erlang/otp/edit/maint/lib/stdlib/doc/src/ms_transform.xml#L78" title="Found an issue with the documentation? Fix it by clicking here!"><span class="pencil"></span></a></span><a class="title_link" name="example-1" href="#example-1">Example 1</a></span></h3>
<div class="REFBODY rb-3">
    
    <p>Using <span class="bold_code bc-15"><a href="ets.html#select-2"><span class="code">ets:select/2</span></a></span>
    and a match specification, one can filter out rows of
    a table and construct a list of tuples containing relevant parts
    of the data in these rows.
    One can use <span class="bold_code bc-15"><a href="ets.html#foldl-3"><span class="code">ets:foldl/3</span></a></span>
    instead, but the <span class="code">ets:select/2</span> call is far more efficient.
    Without the translation provided by <span class="code">ms_transform</span>,
    one must struggle with writing match specifications terms
    to accommodate this.</p>

    <p>Consider a simple table of employees:</p>

    <div class="example"><pre>-record(emp, {empno,     %Employee number as a string, the key
              surname,   %Surname of the employee
              givenname, %Given name of employee
              dept,      %Department, one of {dev,sales,prod,adm}
              empyear}). %Year the employee was employed</pre></div>

    <p>We create the table using:</p>

    <div class="example"><pre>ets:new(emp_tab, [{keypos,#emp.empno},named_table,ordered_set]).</pre></div>

    <p>We fill the table with randomly chosen data:</p>

    <div class="example"><pre>[{emp,"011103","Black","Alfred",sales,2000},
 {emp,"041231","Doe","John",prod,2001},
 {emp,"052341","Smith","John",dev,1997},
 {emp,"076324","Smith","Ella",sales,1995},
 {emp,"122334","Weston","Anna",prod,2002},
 {emp,"535216","Chalker","Samuel",adm,1998},
 {emp,"789789","Harrysson","Joe",adm,1996},
 {emp,"963721","Scott","Juliana",dev,2003},
 {emp,"989891","Brown","Gabriel",prod,1999}]</pre></div>

    <p>Assuming that we want the employee numbers of everyone in the sales
      department, there are several ways.</p>

      <p><span class="code">ets:match/2</span> can be used:</p>

    <div class="example"><pre>
1&gt; <span class="bold_code bc-12">ets:match(emp_tab, {'_', '$1', '_', '_', sales, '_'}).</span>
[["011103"],["076324"]]</pre></div>

    <p><span class="code">ets:match/2</span> uses a simpler type of match specification,
    but it is still unreadable, and one has little control over the
    returned result. It is always a list of lists.</p>

    <p><span class="bold_code bc-15"><a href="ets.html#foldl-3"><span class="code">ets:foldl/3</span></a></span> or
      <span class="bold_code bc-15"><a href="ets.html#foldr-3"><span class="code">ets:foldr/3</span></a></span> can be used to avoid the nested lists:</p>

    <div class="example"><pre>ets:foldr(fun(#emp{empno = E, dept = sales},Acc) -&gt; [E | Acc];
             (_,Acc) -&gt; Acc
          end,
          [],
          emp_tab).</pre></div>

    <p>The result is <span class="code">["011103","076324"]</span>. The fun is
      straightforward, so the only problem is that all the data from the
      table must be transferred from the table to the calling process for
      filtering. That is inefficient compared to the <span class="code">ets:match/2</span>
      call where the filtering can be done "inside" the emulator and only
      the result is transferred to the process.</p>

    <p>Consider a "pure" <span class="code">ets:select/2</span> call that does what
    <span class="code">ets:foldr</span> does:</p>

    <div class="example"><pre>ets:select(emp_tab, [{#emp{empno = '$1', dept = sales, _='_'},[],['$1']}]).</pre></div>

    <p>Although the record syntax is used, it is still hard to
      read and even harder to write. The first element of the tuple,
      <span class="code">#emp{empno = '$1', dept = sales, _='_'}</span>, tells what to
      match. Elements not matching this are not returned, as in
      the <span class="code">ets:match/2</span> example. The second element, the empty list,
      is a list of guard expressions, which we do not need. The third
      element is the list of expressions constructing the return value (in
      ETS this is almost always a list containing one single term).
      In our case <span class="code">'$1'</span> is bound to the employee number in the head
      (first element of the tuple), and hence the employee number is
      returned. The result is <span class="code">["011103","076324"]</span>, as in
      the <span class="code">ets:foldr/3</span> example, but the result is retrieved much
      more efficiently in terms of execution speed and
      memory consumption.</p>

      <p>Using <span class="code">ets:fun2ms/1</span>, we can combine the ease of use of
      the <span class="code">ets:foldr/3</span> and the efficiency of the pure
      <span class="code">ets:select/2</span> example:</p>

    <div class="example"><pre>-include_lib("stdlib/include/ms_transform.hrl").

ets:select(emp_tab, ets:fun2ms(
                      fun(#emp{empno = E, dept = sales}) -&gt;
                              E
                      end)).</pre></div>

    <p>This example requires no special knowledge of match
    specifications to understand. The head of the fun matches what
    you want to filter out and the body returns what you want
    returned. As long as the fun can be kept within the limits of the
    match specifications, there is no need to transfer all table data
    to the process for filtering as in the <span class="code">ets:foldr/3</span>
    example. It is easier to read than the <span class="code">ets:foldr/3</span> example,
    as the select call in itself discards anything that does not
    match, while the fun of the <span class="code">ets:foldr/3</span> call needs to
    handle both the elements matching and the ones not matching.</p>

    <p>In the <span class="code">ets:fun2ms/1</span> example above, it is needed to
    include <span class="code">ms_transform.hrl</span> in the source code, as this is
    what triggers the parse transformation of the <span class="code">ets:fun2ms/1</span>
    call to a valid match specification. This also implies that the
    transformation is done at compile time (except when called from
    the shell) and therefore takes no resources in runtime. That is,
    although you use the more intuitive fun syntax, it gets as
    efficient in runtime as writing match specifications by hand.</p>
  </div>

  <h3><span onMouseOver="document.getElementById('ghlink-example-2-idm281471864279976').style.visibility = 'visible';" onMouseOut="document.getElementById('ghlink-example-2-idm281471864279976').style.visibility = 'hidden';"><span id="ghlink-example-2-idm281471864279976" class="ghlink"><a href="https://github.com/erlang/otp/edit/maint/lib/stdlib/doc/src/ms_transform.xml#L201" title="Found an issue with the documentation? Fix it by clicking here!"><span class="pencil"></span></a></span><a class="title_link" name="example-2" href="#example-2">Example 2</a></span></h3>
<div class="REFBODY rb-3">
    
    <p>Assume that we want to get all the employee numbers of employees
      hired before year 2000. Using <span class="code">ets:match/2</span> is not
      an alternative here, as relational operators cannot be
      expressed there.
      Once again, <span class="code">ets:foldr/3</span> can do it (slowly, but correct):</p>

    <div class="example"><pre>ets:foldr(fun(#emp{empno = E, empyear = Y},Acc) when Y &lt; 2000 -&gt; [E | Acc];
                  (_,Acc) -&gt; Acc
          end,
          [],
          emp_tab).    </pre></div>

    <p>The result is <span class="code">["052341","076324","535216","789789","989891"]</span>,
    as expected. The equivalent expression using a handwritten match
    specification would look like this:</p>

    <div class="example"><pre>ets:select(emp_tab, [{#emp{empno = '$1', empyear = '$2', _='_'},
                     [{'&lt;', '$2', 2000}],
                     ['$1']}]).    </pre></div>

    <p>This gives the same result. <span class="code">[{'&lt;', '$2', 2000}]</span> is in
      the guard part and therefore discards anything that does not have an
      <span class="code">empyear</span> (bound to <span class="code">'$2'</span> in the head) less than 2000, as
      the guard in the <span class="code">foldr/3</span> example.</p>

    <p>We write it using <span class="code">ets:fun2ms/1</span>:</p>

    <div class="example"><pre>-include_lib("stdlib/include/ms_transform.hrl").

ets:select(emp_tab, ets:fun2ms(
                      fun(#emp{empno = E, empyear = Y}) when Y &lt; 2000 -&gt;
                           E
                      end)).    </pre></div>
  </div>

  <h3><span onMouseOver="document.getElementById('ghlink-example-3-idm281471864270296').style.visibility = 'visible';" onMouseOut="document.getElementById('ghlink-example-3-idm281471864270296').style.visibility = 'hidden';"><span id="ghlink-example-3-idm281471864270296" class="ghlink"><a href="https://github.com/erlang/otp/edit/maint/lib/stdlib/doc/src/ms_transform.xml#L241" title="Found an issue with the documentation? Fix it by clicking here!"><span class="pencil"></span></a></span><a class="title_link" name="example-3" href="#example-3">Example 3</a></span></h3>
<div class="REFBODY rb-3">
    
    <p>Assume that we want the whole object matching instead of only one
      element. One alternative is to assign a variable to every part
      of the record and build it up once again in the body of the fun, but
      the following is easier:</p>

    <div class="example"><pre>ets:select(emp_tab, ets:fun2ms(
                      fun(Obj = #emp{empno = E, empyear = Y}) 
                         when Y &lt; 2000 -&gt;
                              Obj
                      end)).</pre></div>

    <p>As in ordinary Erlang matching, you can bind a variable to the
      whole matched object using a "match inside the match", that is, a
      <span class="code">=</span>. Unfortunately in funs translated to match specifications,
      it is allowed only at the "top-level", that is,
      matching the <strong>whole</strong> object arriving to be matched
      into a separate variable.
      If you are used to writing match specifications by hand, we
      mention that variable A is simply translated into '$_'.
      Alternatively, pseudo function <span class="code">object/0</span>
      also returns the whole matched object, see section
      <span class="bold_code bc-17"><a href="#warnings_and_restrictions">Warnings and Restrictions</a></span>.</p>
  </div>

  <h3><span onMouseOver="document.getElementById('ghlink-example-4-idm281471864264472').style.visibility = 'visible';" onMouseOut="document.getElementById('ghlink-example-4-idm281471864264472').style.visibility = 'hidden';"><span id="ghlink-example-4-idm281471864264472" class="ghlink"><a href="https://github.com/erlang/otp/edit/maint/lib/stdlib/doc/src/ms_transform.xml#L269" title="Found an issue with the documentation? Fix it by clicking here!"><span class="pencil"></span></a></span><a class="title_link" name="example-4" href="#example-4">Example 4</a></span></h3>
<div class="REFBODY rb-3">
    
    <p>This example concerns the body of the fun. Assume that all employee
      numbers beginning with zero (<span class="code">0</span>) must be changed to begin with
      one (<span class="code">1</span>) instead, and that we want to create the list
      <span class="code">[{&lt;Old empno&gt;,&lt;New empno&gt;}]</span>:</p>

    <div class="example"><pre>ets:select(emp_tab, ets:fun2ms(
                      fun(#emp{empno = [$0 | Rest] }) -&gt;
                              {[$0|Rest],[$1|Rest]}
                      end)).</pre></div>

    <p>This query hits the feature of partially bound
      keys in table type <span class="code">ordered_set</span>, so that not the whole
      table needs to be searched, only the part containing keys
      beginning with <span class="code">0</span> is looked into.</p>
  </div>

  <h3><span onMouseOver="document.getElementById('ghlink-example-5-idm281471864258936').style.visibility = 'visible';" onMouseOut="document.getElementById('ghlink-example-5-idm281471864258936').style.visibility = 'hidden';"><span id="ghlink-example-5-idm281471864258936" class="ghlink"><a href="https://github.com/erlang/otp/edit/maint/lib/stdlib/doc/src/ms_transform.xml#L288" title="Found an issue with the documentation? Fix it by clicking here!"><span class="pencil"></span></a></span><a class="title_link" name="example-5" href="#example-5">Example 5</a></span></h3>
<div class="REFBODY rb-3">
    
    <p>The fun can have many clauses. Assume that we want to do
      the following:</p>

    <ul>
      <li>
        <p>If an employee started before 1997, return the tuple
          <span class="code">{inventory, &lt;employee number&gt;}</span>.</p>
      </li>
      <li>
        <p>If an employee started 1997 or later, but before 2001, return
          <span class="code">{rookie, &lt;employee number&gt;}</span>.</p>
      </li>
      <li>
        <p>For all other employees, return
          <span class="code">{newbie, &lt;employee number&gt;}</span>, except for those
          named <span class="code">Smith</span> as they would be affronted by anything other
          than the tag <span class="code">guru</span> and that is also what is returned for their
          numbers: <span class="code">{guru, &lt;employee number&gt;}</span>.</p>
      </li>
    </ul>

    <p>This is accomplished as follows:</p>

    <div class="example"><pre>ets:select(emp_tab, ets:fun2ms(
                      fun(#emp{empno = E, surname = "Smith" }) -&gt;
                              {guru,E};
                         (#emp{empno = E, empyear = Y}) when Y &lt; 1997  -&gt;
                              {inventory, E};
                         (#emp{empno = E, empyear = Y}) when Y &gt; 2001  -&gt;
                              {newbie, E};
                         (#emp{empno = E, empyear = Y}) -&gt; % 1997 -- 2001
                              {rookie, E}
                      end)).    </pre></div>

    <p>The result is as follows:</p>

    <div class="example"><pre>[{rookie,"011103"},
 {rookie,"041231"},
 {guru,"052341"},
 {guru,"076324"},
 {newbie,"122334"},
 {rookie,"535216"},
 {inventory,"789789"},
 {newbie,"963721"},
 {rookie,"989891"}]</pre></div>
  </div>

  <h3><span onMouseOver="document.getElementById('ghlink-useful-bifs-idm281471864248312').style.visibility = 'visible';" onMouseOut="document.getElementById('ghlink-useful-bifs-idm281471864248312').style.visibility = 'hidden';"><span id="ghlink-useful-bifs-idm281471864248312" class="ghlink"><a href="https://github.com/erlang/otp/edit/maint/lib/stdlib/doc/src/ms_transform.xml#L339" title="Found an issue with the documentation? Fix it by clicking here!"><span class="pencil"></span></a></span><a class="title_link" name="useful-bifs" href="#useful-bifs">Useful BIFs</a></span></h3>
<div class="REFBODY rb-3">
    
    <p>What more can you do? A simple answer is: see the documentation of
      <span class="bold_code bc-18"><a href="javascript:erlhref('../../../../doc/../','erts','match_spec.html');">match specifications</a></span>
      in ERTS User's Guide.
      However, the following is a brief overview of the most useful "built-in
      functions" that you can use when the fun is to be translated into a match
      specification by
      <span class="bold_code bc-15"><a href="ets.html#fun2ms-1"><span class="code">ets:fun2ms/1</span></a></span>. It is not
      possible to call other functions than those allowed in match
      specifications. No "usual" Erlang code can be executed by the fun that
      is translated by <span class="code">ets:fun2ms/1</span>. The fun is limited
      exactly to the power of the match specifications, which is
      unfortunate, but the price one must pay for the execution speed of
      <span class="code">ets:select/2</span> compared to <span class="code">ets:foldl/foldr</span>.</p>

    <p>The head of the fun is a head matching (or mismatching)
      <strong>one</strong> parameter, one object of the table we select
      from. The object is always a single variable (can be <span class="code">_</span>) or
      a tuple, as ETS, Dets, and Mnesia tables include
      that. The match specification returned by <span class="code">ets:fun2ms/1</span> can
      be used with <span class="code">dets:select/2</span> and <span class="code">mnesia:select/2</span>, and
      with <span class="code">ets:select/2</span>. The use of <span class="code">=</span> in the head
      is allowed (and encouraged) at the top-level.</p>

    <p>The guard section can contain any guard expression of Erlang.
    The following is a list of BIFs and expressions:</p>

    <ul>
      <li>
        <p>Type tests: <span class="code">is_atom</span>, <span class="code">is_float</span>, <span class="code">is_integer</span>,
          <span class="code">is_list</span>, <span class="code">is_number</span>, <span class="code">is_pid</span>, <span class="code">is_port</span>,
          <span class="code">is_reference</span>, <span class="code">is_tuple</span>, <span class="code">is_binary</span>,
          <span class="code">is_function</span>, <span class="code">is_record</span></p>
      </li>
      <li>
        <p>Boolean operators: <span class="code">not</span>, <span class="code">and</span>, <span class="code">or</span>,
          <span class="code">andalso</span>, <span class="code">orelse</span></p>
      </li>
      <li>
        <p>Relational operators: &gt;, &gt;=, &lt;, =&lt;, =:=, ==, =/=, /=</p>
      </li>
      <li>
        <p>Arithmetics: <span class="code">+</span>, <span class="code">-</span>, <span class="code">*</span>,
	<span class="code">div</span>, <span class="code">rem</span></p>
      </li>
      <li>
        <p>Bitwise operators: <span class="code">band</span>, <span class="code">bor</span>, <span class="code">bxor</span>, <span class="code">bnot</span>,
          <span class="code">bsl</span>, <span class="code">bsr</span></p>
      </li>
      <li>
        <p>The guard BIFs: <span class="code">abs</span>, <span class="code">element</span>,
	<span class="code">hd</span>, <span class="code">length</span>,
        <span class="code">node</span>, <span class="code">round</span>, <span class="code">size</span>, <span class="code">tl</span>, <span class="code">trunc</span>,
        <span class="code">self</span></p>
      </li>
    </ul>

    <p>Contrary to the fact with "handwritten" match specifications, the
      <span class="code">is_record</span> guard works as in ordinary Erlang code.</p>

    <p>Semicolons (<span class="code">;</span>) in guards are allowed, the result is (as
      expected) one "match specification clause" for each semicolon-separated
      part of the guard. The semantics is identical to the Erlang
      semantics.</p>

    <p>The body of the fun is used to construct the
      resulting value. When selecting from tables, one usually construct
      a suiting term here, using ordinary Erlang term construction, like
      tuple parentheses, list brackets, and variables matched out in the
      head, possibly with the occasional constant. Whatever
      expressions are allowed in guards are also allowed here, but no special
      functions exist except <span class="code">object</span> and
      <span class="code">bindings</span> (see further down), which returns the whole
      matched object and all known variable bindings, respectively.</p>

    <p>The <span class="code">dbg</span> variants of match specifications have an
      imperative approach to the match specification body, the ETS
      dialect has not. The fun body for <span class="code">ets:fun2ms/1</span> returns the result
      without side effects. As matching (<span class="code">=</span>) in the body of
      the match specifications is not allowed (for performance reasons) the
      only thing left, more or less, is term construction.</p>
  </div>

  <h3><span onMouseOver="document.getElementById('ghlink-example-with-dbg-idm281471864210648').style.visibility = 'visible';" onMouseOut="document.getElementById('ghlink-example-with-dbg-idm281471864210648').style.visibility = 'hidden';"><span id="ghlink-example-with-dbg-idm281471864210648" class="ghlink"><a href="https://github.com/erlang/otp/edit/maint/lib/stdlib/doc/src/ms_transform.xml#L423" title="Found an issue with the documentation? Fix it by clicking here!"><span class="pencil"></span></a></span><a class="title_link" name="example-with-dbg" href="#example-with-dbg">Example with dbg</a></span></h3>
<div class="REFBODY rb-3">
    
    <p>This section describes the slightly different match specifications
      translated by <span class="bold_code bc-13"><a href="javascript:erlhref('../../../../doc/../','runtime_tools','dbg.html#fun2ms-1');"><span class="code">dbg:fun2ms/1</span></a></span>.</p>

    <p>The same reasons for using the parse transformation apply to
      <span class="code">dbg</span>, maybe even more, as filtering using Erlang code is
      not a good idea when tracing (except afterwards, if you trace
      to file). The concept is similar to that of <span class="code">ets:fun2ms/1</span>
      except that you usually use it directly from the shell
      (which can also be done with <span class="code">ets:fun2ms/1</span>).</p>

    <p>The following is an example module to trace on:</p>

    <div class="example"><pre>-module(toy).

-export([start/1, store/2, retrieve/1]).

start(Args) -&gt;
    toy_table = ets:new(toy_table, Args).

store(Key, Value) -&gt;
    ets:insert(toy_table, {Key,Value}).

retrieve(Key) -&gt;
    [{Key, Value}] = ets:lookup(toy_table, Key),
    Value.</pre></div>

    <p>During model testing, the first test results in
      <span class="code">{badmatch,16}</span> in <span class="code">{toy,start,1}</span>, why?</p>

    <p>We suspect the <span class="code">ets:new/2</span> call, as we match hard on the
    return value, but want only the particular <span class="code">new/2</span> call with
    <span class="code">toy_table</span> as first parameter. So we start a default tracer
    on the node:</p>

    <div class="example"><pre>
1&gt; <span class="bold_code bc-12">dbg:tracer().</span>
{ok,&lt;0.88.0&gt;}</pre></div>

    <p>We turn on call tracing for all processes, we want to
      make a pretty restrictive trace pattern, so there is no need to call
      trace only a few processes (usually it is not):</p>

    <div class="example"><pre>
2&gt; <span class="bold_code bc-12">dbg:p(all,call).</span>
{ok,[{matched,nonode@nohost,25}]}</pre></div>

    <p>We specify the filter, we want to view calls that resemble
      <span class="code">ets:new(toy_table, &lt;something&gt;)</span>:</p>

    <div class="example"><pre>
3&gt; <span class="bold_code bc-12">dbg:tp(ets,new,dbg:fun2ms(fun([toy_table,_]) -&gt; true end)).</span>
{ok,[{matched,nonode@nohost,1},{saved,1}]}</pre></div>

    <p>As can be seen, the fun used with
      <span class="code">dbg:fun2ms/1</span> takes a single list as parameter instead of a
      single tuple. The list matches a list of the parameters to the traced
      function. A single variable can also be used. The body
      of the fun expresses, in a more imperative way, actions to be taken if
      the fun head (and the guards) matches. <span class="code">true</span> is returned here,
      only because the body of a fun cannot be empty. The return value
      is discarded.</p>

    <p>The following trace output is received during test:</p>

    <div class="example"><pre>(&lt;0.86.0&gt;) call ets:new(toy_table, [ordered_set])    </pre></div>

    <p>Assume that we have not found the problem yet, and want to see what
      <span class="code">ets:new/2</span> returns. We use a slightly different trace pattern:</p>

    <div class="example"><pre>
4&gt; <span class="bold_code bc-12">dbg:tp(ets,new,dbg:fun2ms(fun([toy_table,_]) -&gt; return_trace() end)).</span></pre></div>

    <p>The following trace output is received during test:</p>

    <div class="example"><pre>(&lt;0.86.0&gt;) call ets:new(toy_table,[ordered_set])
(&lt;0.86.0&gt;) returned from ets:new/2 -&gt; 24    </pre></div>

    <p>The call to <span class="code">return_trace</span> results in a trace message
      when the function returns. It applies only to the specific function call
      triggering the match specification (and matching the head/guards of
      the match specification). This is by far the most common call in the
      body of a <span class="code">dbg</span> match specification.</p>

    <p>The test now fails with <span class="code">{badmatch,24}</span> because the atom
      <span class="code">toy_table</span> does not match the number returned for an unnamed table.
      So, the problem is found, the table is to be named, and the arguments
      supplied by the test program do not include <span class="code">named_table</span>. We
      rewrite the start function:</p>

    <div class="example"><pre>start(Args) -&gt;
    toy_table = ets:new(toy_table, [named_table|Args]).</pre></div>

    <p>With the same tracing turned on, the following trace output is
      received:</p>

    <div class="example"><pre>(&lt;0.86.0&gt;) call ets:new(toy_table,[named_table,ordered_set])
(&lt;0.86.0&gt;) returned from ets:new/2 -&gt; toy_table    </pre></div>

    <p>Assume that the module now passes all testing and goes into
      the system. After a while, it is found that table
      <span class="code">toy_table</span> grows while the system is running and that
      there are many elements with atoms as keys. We expected
      only integer keys and so does the rest of the system, but
      clearly not the entire system. We turn on call tracing and try to
      see calls to the module with an atom as the key:</p>

    <div class="example"><pre>
1&gt; <span class="bold_code bc-12">dbg:tracer().</span>
{ok,&lt;0.88.0&gt;}
2&gt; <span class="bold_code bc-12">dbg:p(all,call).</span>
{ok,[{matched,nonode@nohost,25}]}
3&gt; <span class="bold_code bc-12">dbg:tpl(toy,store,dbg:fun2ms(fun([A,_]) when is_atom(A) -&gt; true end)).</span>
{ok,[{matched,nonode@nohost,1},{saved,1}]}</pre></div>

    <p>We use <span class="code">dbg:tpl/3</span> to ensure to catch local calls
      (assume that the module has grown since the smaller version and we are
      unsure if this inserting of atoms is not done locally). When in
      doubt, always use local call tracing.</p>

    <p>Assume that nothing happens when tracing in this way. The function
      is never called with these parameters. We conclude that
      someone else (some other module) is doing it and realize that we
      must trace on <span class="code">ets:insert/2</span> and want to see the calling function.
      The calling function can be retrieved using the match specification
      function <span class="code">caller</span>. To get it into the trace message, the match
      specification function <span class="code">message</span> must be used. The filter
      call looks like this (looking for calls to <span class="code">ets:insert/2</span>):</p>

    <div class="example"><pre>
4&gt; <span class="bold_code bc-12">dbg:tpl(ets,insert,dbg:fun2ms(fun([toy_table,{A,_}]) when is_atom(A) -&gt; </span>
<span class="bold_code bc-12">                                    message(caller()) </span>
<span class="bold_code bc-12">                                  end)). </span>
{ok,[{matched,nonode@nohost,1},{saved,2}]}</pre></div>

    <p>The caller is now displayed in the "additional message" part of the
      trace output, and the following is displayed after a while:</p>

    <div class="example"><pre>(&lt;0.86.0&gt;) call ets:insert(toy_table,{garbage,can}) ({evil_mod,evil_fun,2})    </pre></div>

    <p>You have realized that function <span class="code">evil_fun</span> of the
      <span class="code">evil_mod</span> module, with arity <span class="code">2</span>, is causing all this trouble.
    </p>

    <p>This example illustrates the most used calls in match specifications for
      <span class="code">dbg</span>. The other, more esoteric, calls are listed and explained in
      <span class="bold_code bc-18"><a href="javascript:erlhref('../../../../doc/../','erts','match_spec.html');">Match specifications in Erlang</a></span>
    in ERTS User's Guide, as they are beyond
    the scope of this description.</p>
  </div>

  <h3><span onMouseOver="document.getElementById('ghlink-warnings-and-restrictions-idm281471864171096').style.visibility = 'visible';" onMouseOut="document.getElementById('ghlink-warnings-and-restrictions-idm281471864171096').style.visibility = 'hidden';"><span id="ghlink-warnings-and-restrictions-idm281471864171096" class="ghlink"><a href="https://github.com/erlang/otp/edit/maint/lib/stdlib/doc/src/ms_transform.xml#L582" title="Found an issue with the documentation? Fix it by clicking here!"><span class="pencil"></span></a></span><a class="title_link" name="warnings-and-restrictions" href="#warnings-and-restrictions">Warnings and Restrictions</a></span></h3>
<div class="REFBODY rb-3">
    
    <a name="warnings_and_restrictions"></a>
    <p>The following warnings and restrictions apply to the funs used in
       with <span class="code">ets:fun2ms/1</span> and <span class="code">dbg:fun2ms/1</span>.</p>

    <div class="warning">
<div class="label">Warning</div>
<div class="content"><p>
      <p>To use the pseudo functions triggering the translation,
        ensure to include the header file <span class="code">ms_transform.hrl</span>
        in the source code. Failure to do so possibly results in
        runtime errors rather than compile time, as the expression can
        be valid as a plain Erlang program without translation.</p>
    </p></div>
</div>

    <div class="warning">
<div class="label">Warning</div>
<div class="content"><p>
      <p>The fun must be literally constructed inside the
        parameter list to the pseudo functions. The fun cannot
        be bound to a variable first and then passed to
        <span class="code">ets:fun2ms/1</span> or <span class="code">dbg:fun2ms/1</span>. For example,
        <span class="code">ets:fun2ms(fun(A) -&gt; A end)</span> works, but not
        <span class="code">F = fun(A) -&gt; A end, ets:fun2ms(F)</span>. The latter results
        in a compile-time error if the header is included, otherwise a
        runtime error.</p>
    </p></div>
</div>

    <p>Many restrictions apply to the fun that is translated into a match
      specification. To put it simple: you cannot use anything in the fun
      that you cannot use in a match specification. This means that,
      among others, the following restrictions apply to the fun itself:</p>

    <ul>
      <li>
        <p>Functions written in Erlang cannot be called, neither can
          local functions, global functions, or real funs.</p>
      </li>
      <li>
        <p>Everything that is written as a function call is translated
          into a match specification call to a built-in function, so that
          the call <span class="code">is_list(X)</span> is translated to <span class="code">{'is_list', '$1'}</span>
          (<span class="code">'$1'</span> is only an example, the numbering can vary).
          If one tries to call a function that is not a match specification
          built-in, it causes an error.</p>
      </li>
      <li>
        <p>Variables occurring in the head of the fun are replaced by
          match specification variables in the order of occurrence, so
          that fragment <span class="code">fun({A,B,C})</span> is replaced by
          <span class="code">{'$1', '$2', '$3'}</span>, and so on. Every occurrence of such a
          variable in the match specification is replaced by a match
          specification variable in the same way, so that the fun
          <span class="code">fun({A,B}) when is_atom(A) -&gt; B end</span> is translated into
          <span class="code">[{{'$1','$2'},[{is_atom,'$1'}],['$2']}]</span>.</p>
      </li>
      <li>
        <p>Variables that are not included in the head are imported
          from the environment and made into match specification
          <span class="code">const</span> expressions. Example from the shell:</p>
        <div class="example"><pre>
1&gt; <span class="bold_code bc-12">X = 25.</span>
25
2&gt; <span class="bold_code bc-12">ets:fun2ms(fun({A,B}) when A &gt; X -&gt; B end).</span>
[{{'$1','$2'},[{'&gt;','$1',{const,25}}],['$2']}]</pre></div>
      </li>
      <li>
        <p>Matching with <span class="code">=</span> cannot be used in the body. It can only
          be used on the top-level in the head of the fun.
          Example from the shell again:</p>
        <div class="example"><pre>
1&gt; <span class="bold_code bc-12">ets:fun2ms(fun({A,[B|C]} = D) when A &gt; B -&gt; D end).</span>
[{{'$1',['$2'|'$3']},[{'&gt;','$1','$2'}],['$_']}]
2&gt; <span class="bold_code bc-12">ets:fun2ms(fun({A,[B|C]=D}) when A &gt; B -&gt; D end).</span>
Error: fun with head matching ('=' in head) cannot be translated into 
match_spec 
{error,transform_error}
3&gt; <span class="bold_code bc-12">ets:fun2ms(fun({A,[B|C]}) when A &gt; B -&gt; D = [B|C], D end).</span>
Error: fun with body matching ('=' in body) is illegal as match_spec
{error,transform_error}</pre></div>
        <p>All variables are bound in the head of a match specification, so
          the translator cannot allow multiple bindings. The special case
          when matching is done on the top-level makes the variable bind
          to <span class="code">'$_'</span> in the resulting match specification. It is to allow
          a more natural access to the whole matched object. Pseudo
          function <span class="code">object()</span> can be used instead, see below.</p>
        <p>The following expressions are translated equally:</p>
        <div class="example"><pre>ets:fun2ms(fun({a,_} = A) -&gt; A end).
ets:fun2ms(fun({a,_}) -&gt; object() end).</pre></div>
      </li>
      <li>
        <p>The special match specification variables <span class="code">'$_'</span> and <span class="code">'$*'</span>
          can be accessed through the pseudo functions <span class="code">object()</span>
          (for <span class="code">'$_'</span>) and <span class="code">bindings()</span> (for <span class="code">'$*'</span>).
          As an example, one can translate the following
          <span class="code">ets:match_object/2</span> call to a <span class="code">ets:select/2</span> call:</p>
        <div class="example"><pre>ets:match_object(Table, {'$1',test,'$2'}). </pre></div>
        <p>This is the same as:</p>
        <div class="example"><pre>ets:select(Table, ets:fun2ms(fun({A,test,B}) -&gt; object() end)).</pre></div>
        <p>In this simple case, the former
          expression is probably preferable in terms of readability.</p>
        <p>The <span class="code">ets:select/2</span> call conceptually looks like this
          in the resulting code:</p>
        <div class="example"><pre>ets:select(Table, [{{'$1',test,'$2'},[],['$_']}]).</pre></div>
        <p>Matching on the top-level of the fun head can be a
          more natural way to access <span class="code">'$_'</span>, see above.</p>
      </li>
      <li>
        <p>Term constructions/literals are translated as much as is needed to
          get them into valid match specification. This way tuples are made
          into match specification tuple constructions (a one element tuple
          containing the tuple) and constant expressions are used when
          importing variables from the environment. Records are also
          translated into plain tuple constructions, calls to element,
          and so on. The guard test <span class="code">is_record/2</span> is translated into
          match specification code using the three parameter version that is
          built into match specification, so that <span class="code">is_record(A,t)</span> is
          translated into <span class="code">{is_record,'$1',t,5}</span> if the record
          size of record type <span class="code">t</span> is 5.</p>
      </li>
      <li>
        <p>Language constructions such as <span class="code">case</span>, <span class="code">if</span>, and
          <span class="code">catch</span> that are not present in match specifications are not
       allowed.</p>
      </li>
      <li>
        <p>If header file <span class="code">ms_transform.hrl</span> is not included,
          the fun is not translated, which can result in a
          <strong>runtime error</strong> (depending on whether the fun is
	  valid in a pure Erlang context).</p>
        <p>Ensure that the header is included when using <span class="code">ets</span> and
          <span class="code">dbg:fun2ms/1</span> in compiled code.</p>
      </li>
      <li>
        <p>If pseudo function triggering the translation is
          <span class="code">ets:fun2ms/1</span>, the head of the fun must contain a single
          variable or a single tuple. If the pseudo function is
          <span class="code">dbg:fun2ms/1</span>, the head of the fun must contain a single
          variable or a single list.</p>
      </li>
    </ul>
    <p>The translation from funs to match specifications is done at compile
      time, so runtime performance is not affected by using these pseudo
      functions.</p>
    <p>For more information about match specifications, see the
    <span class="bold_code bc-18"><a href="javascript:erlhref('../../../../doc/../','erts','match_spec.html');">Match specifications in Erlang</a></span>
    in ERTS User's Guide.</p>
  </div>

  <h3><span onMouseOver="document.getElementById('ghlink-exports-idm281471864123800').style.visibility = 'visible';" onMouseOut="document.getElementById('ghlink-exports-idm281471864123800').style.visibility = 'hidden';"><span id="ghlink-exports-idm281471864123800"></span><a class="title_link" name="exports" href="#exports">Exports</a></span></h3>
<div class="exports-body">
    <p><a name="format_error-1"></a><div class="bold_code func-head" onMouseOver="document.getElementById('ghlink-format_error-1-idm281471851125656').style.visibility = 'visible';" onMouseOut="document.getElementById('ghlink-format_error-1-idm281471851125656').style.visibility = 'hidden';">
<span id="ghlink-format_error-1-idm281471851125656" class="ghlink"><a href="https://github.com/erlang/otp/edit/maint/lib/stdlib/doc/src/ms_transform.xml#L733" title="Found an issue with the documentation? Fix it by clicking here!"><span class="pencil"></span></a></span>format_error(Error) -&gt; Chars</div><div class="REFBODY fun-types">
<h3 class="func-types-title">Types</h3>
<div class="REFTYPES rt-1"><span class="bold_code bc-2">Error = {error, module(), term()}</span></div>
<div class="REFTYPES rt-1"><span class="bold_code bc-2">Chars = <span class="bold_code bc-15"><a href="io_lib.html#type-chars">io_lib:chars()</a></span></span></div>
</div></p>
<div class="REFBODY rb-7"><p>
        <p>Takes an error code returned by one of the other functions
          in the module and creates a textual description of the
          error.</p>
      </p></div>

    <p><a name="parse_transform-2"></a><div class="bold_code func-head" onMouseOver="document.getElementById('ghlink-parse_transform-2-idm281471852802408').style.visibility = 'visible';" onMouseOut="document.getElementById('ghlink-parse_transform-2-idm281471852802408').style.visibility = 'hidden';">
<span id="ghlink-parse_transform-2-idm281471852802408" class="ghlink"><a href="https://github.com/erlang/otp/edit/maint/lib/stdlib/doc/src/ms_transform.xml#L743" title="Found an issue with the documentation? Fix it by clicking here!"><span class="pencil"></span></a></span>parse_transform(Forms, Options) -&gt; Forms2 | Errors | Warnings</div><div class="REFBODY fun-types">
<h3 class="func-types-title">Types</h3>
<div class="REFTYPES rt-1"><span class="bold_code bc-2">Forms = Forms2 = [<span class="bold_code bc-15"><a href="erl_parse.html#type-abstract_form">erl_parse:abstract_form()</a></span> | <span class="bold_code bc-15"><a href="erl_parse.html#type-form_info">erl_parse:form_info()</a></span>]</span></div>
<div class="REFTYPES rt-1"><span class="bold_code bc-2"></span></div>
<div class="REFTYPES rt-1"><span class="bold_code bc-2">Options = term()</span></div>
<div class="REFBODY rb-1">Option list, required but not used.
      </div>
<div class="REFTYPES rt-1"><span class="bold_code bc-2">Errors = {error, ErrInfo :: [tuple()], WarnInfo :: []}</span></div>
<div class="REFTYPES rt-1"><span class="bold_code bc-2">Warnings = {warning, Forms2, WarnInfo :: [tuple()]}</span></div>
</div></p>
<div class="REFBODY rb-7"><p>
        <p>Implements the transformation at compile time. This
          function is called by the compiler to do the source code
          transformation if and when header file <span class="code">ms_transform.hrl</span>
          is included in the source code.</p>
       <p>For information about how to use this parse transformation, see
         <span class="bold_code bc-19"><a href="ets.html"><span class="code">ets</span></a></span> and
         <span class="bold_code bc-13"><a href="javascript:erlhref('../../../../doc/../','runtime_tools','dbg.html#fun2ms-1');"><span class="code">dbg:fun2ms/1</span></a></span>.</p>
       <p>For a description of match specifications, see section
          <span class="bold_code bc-18"><a href="javascript:erlhref('../../../../doc/../','erts','match_spec.html');">Match Specification in Erlang</a></span> in ERTS User's Guide.</p>
      </p></div>

    <p><a name="transform_from_shell-3"></a><div class="bold_code func-head" onMouseOver="document.getElementById('ghlink-transform_from_shell-3-idm281471851256344').style.visibility = 'visible';" onMouseOut="document.getElementById('ghlink-transform_from_shell-3-idm281471851256344').style.visibility = 'hidden';">
<span id="ghlink-transform_from_shell-3-idm281471851256344" class="ghlink"><a href="https://github.com/erlang/otp/edit/maint/lib/stdlib/doc/src/ms_transform.xml#L764" title="Found an issue with the documentation? Fix it by clicking here!"><span class="pencil"></span></a></span>transform_from_shell(Dialect, Clauses, BoundEnvironment) -&gt; term()</div><div class="REFBODY fun-types">
<h3 class="func-types-title">Types</h3>
<div class="REFTYPES rt-1"><span class="bold_code bc-2">Dialect = ets | dbg</span></div>
<div class="REFTYPES rt-1"><span class="bold_code bc-2">Clauses = [<span class="bold_code bc-15"><a href="erl_parse.html#type-abstract_clause">erl_parse:abstract_clause()</a></span>]</span></div>
<div class="REFTYPES rt-1"><span class="bold_code bc-2">BoundEnvironment = <span class="bold_code bc-15"><a href="erl_eval.html#type-binding_struct">erl_eval:binding_struct()</a></span></span></div>
<div class="REFBODY rb-1">List of variable bindings in the
        shell environment.</div>
</div></p>
<div class="REFBODY rb-7"><p>
        <p>Implements the transformation when the <span class="code">fun2ms/1</span>
          functions are called from the shell. In this case, the abstract
          form is for one single fun (parsed by the Erlang shell).
          All imported variables are to be in the key-value list passed
          as <span class="code">BoundEnvironment</span>. The result is a term,
          normalized, that is, not in abstract format.</p>
      </p></div>
  </div>
</div>
<div class="footer">
<hr>
<p>Copyright © 1997-2019 Ericsson AB. All Rights Reserved.</p>
</div>
</div>
</div>
<script type="text/javascript">window.__otpTopDocDir = '../../../../doc/js/';</script><script type="text/javascript" src="../../../../doc/js/highlight.js"></script>
</body>
</html>