6255 lines
298 KiB
HTML
6255 lines
298 KiB
HTML
<?xml version="1.0" encoding="iso-8859-1" ?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd-->
|
|
<html xmlns="http://www.w3.org/1999/xhtml"
|
|
>
|
|
<head><title>10 Syntax Reference</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
<meta name="generator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" />
|
|
<meta name="originator" content="TeX4ht (http://www.cse.ohio-state.edu/~gurari/TeX4ht/)" />
|
|
<!-- 2,html,xhtml -->
|
|
<meta name="src" content="haskell.tex" />
|
|
<meta name="date" content="2010-07-20 13:11:00" />
|
|
<link rel="stylesheet" type="text/css" href="haskell.css" />
|
|
</head><body
|
|
>
|
|
<!--l. 6--><div class="crosslinks"><p class="noindent">[<a
|
|
href="haskellch11.html" >next</a>] [<a
|
|
href="haskellch9.html" >prev</a>] [<a
|
|
href="haskellch9.html#tailhaskellch9.html" >prev-tail</a>] [<a
|
|
href="#tailhaskellch10.html">tail</a>] [<a
|
|
href="haskellpa1.html#haskellch10.html" >up</a>] </p></div>
|
|
<h2 class="chapterHead"><span class="titlemark">Chapter 10</span><br /><a
|
|
id="x17-17500010"></a>Syntax Reference</h2> <a
|
|
id="dx17-175001"></a>
|
|
<h3 class="sectionHead"><span class="titlemark">10.1 </span> <a
|
|
id="x17-17600010.1"></a>Notational Conventions</h3>
|
|
<p class="noindent"> These notational conventions are used for presenting syntax:
|
|
<p class="noindent">
|
|
<div class="array"> <table id="TBL-100" class="array"
|
|
cellpadding="0" cellspacing="0"
|
|
><colgroup id="TBL-100-1g"><col
|
|
id="TBL-100-1" /><col
|
|
id="TBL-100-2" /></colgroup><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">pattern</span><span
|
|
class="cmr-10">]</span> </div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> optional </div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">pattern</span><span
|
|
class="cmsy-10">}</span> </div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> zero or more repetitions </div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">pattern</span><span
|
|
class="cmr-10">)</span> </div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> grouping </div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="cmmi-10">pat</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> pat</span><sub><span
|
|
class="cmr-7">2</span></sub> </div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> choice </div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="cmmi-10">pat</span><sub><span
|
|
class="cmsy-7">⟨</span><span
|
|
class="cmmi-7">pat</span><span
|
|
class="cmsy-7">′⟩</span></sub> </div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> difference—elements generated by <span
|
|
class="cmmi-10">pat</span> </div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> </div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> except those generated by <span
|
|
class="cmmi-10">pat</span><span
|
|
class="cmsy-10">′</span> </div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="pcrr7t-">fibonacci</span> </div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> terminal syntax in typewriter font </div></td>
|
|
</tr></table> </div>
|
|
<p class="noindent"> BNF-like syntax is used throughout, with productions having the form:
|
|
<div class="flushleft"
|
|
>
|
|
<p class="noindent">
|
|
<!--tex4ht:inline--><div class="tabular"> <table id="TBL-101" class="tabular"
|
|
cellspacing="0" cellpadding="0"
|
|
><colgroup id="TBL-101-1g"><col
|
|
id="TBL-101-1" /><col
|
|
id="TBL-101-2" /><col
|
|
id="TBL-101-3" /><col
|
|
id="TBL-101-4" /></colgroup><tr
|
|
style="vertical-align:baseline;" id="TBL-101-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-101-1-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">nonterm </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-101-1-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-101-1-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">alt</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> alt</span><sub><span
|
|
class="cmr-7">2</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> alt</span><sub><span
|
|
class="cmmi-7">n</span></sub> </td>
|
|
</tr></table>
|
|
</div></div>
|
|
<p class="noindent"> In both the lexical and the context-free syntax, there are some ambiguities that are to be resolved by making
|
|
grammatical phrases as long as possible, proceeding from left to right (in shift-reduce parsing, resolving
|
|
shift/reduce conflicts by shifting). In the lexical syntax, this is the “maximal munch” rule<a
|
|
id="dx17-176001"></a>. In the context-free
|
|
syntax, this means that conditionals, let-expressions, and lambda abstractions extend to the right as far as
|
|
possible.
|
|
|
|
|
|
|
|
<p class="noindent">
|
|
<h3 class="sectionHead"><span class="titlemark">10.2 </span> <a
|
|
id="x17-17700010.2"></a>Lexical Syntax</h3>
|
|
<div class="flushleft"
|
|
>
|
|
<p class="noindent">
|
|
<!--tex4ht:inline--><div class="tabular"> <table id="TBL-102" class="tabular"
|
|
cellspacing="0" cellpadding="0"
|
|
><colgroup id="TBL-102-1g"><col
|
|
id="TBL-102-1" /><col
|
|
id="TBL-102-2" /><col
|
|
id="TBL-102-3" /><col
|
|
id="TBL-102-4" /></colgroup><tr
|
|
style="vertical-align:baseline;" id="TBL-102-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-1-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-2-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">program </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-2-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-2-3"
|
|
class="td11"> <span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10"> lexeme</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> whitespace</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">} </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-3-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">lexeme </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-3-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-3-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qvarid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> qconid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> qvarsym</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> qconsym </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-4-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-102-4-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-4-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">literal</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> special</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> reservedop</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> reservedid </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-5-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">literal </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-5-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-5-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">integer</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> float</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> char</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> string </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-6-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">special </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-6-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-6-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">;</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">[</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">]</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">`</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">{</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">}</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-7-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-8-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-9-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">whitespace </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-9-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-9-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">whitestuff</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">whitestuff</span><span
|
|
class="cmsy-10">} </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-10-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">whitestuff </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-10-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-10-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">whitechar</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> comment</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> ncomment </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-11-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">whitechar </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-11-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-11-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">newline</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> vertab</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> space</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> tab</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> uniWhite </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-12-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">newline </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-12-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-12-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">return</span><span
|
|
class="cmmi-10"> linefeed</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> return</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> linefeed</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> formfeed </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-13-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">return </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-13-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-13-3"
|
|
class="td11"> a carriage return </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-14-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">linefeed </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-14-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-14-3"
|
|
class="td11"> a line feed </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-15-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">vertab </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-15-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-15-3"
|
|
class="td11"> a vertical tab </td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-16-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">formfeed </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-16-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-16-3"
|
|
class="td11"> a form feed</td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-17-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">space </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-17-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-17-3"
|
|
class="td11"> a space </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-18-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">tab </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-18-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-18-3"
|
|
class="td11"> a horizontal tab </td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-19-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">uniWhite </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-19-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-19-3"
|
|
class="td11"> any Unicode character defined as whitespace</td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-20-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-21-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-22-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">comment </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-22-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-22-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">dashes</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10"> any</span><sub><span
|
|
class="cmsy-7">⟨</span><span
|
|
class="cmmi-7">symbol</span><span
|
|
class="cmsy-7">⟩</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">any</span><span
|
|
class="cmsy-10">}</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> newline </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-23-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">dashes </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-23-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-23-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">--</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">{</span><span
|
|
class="pcrr7t-">-</span><span
|
|
class="cmsy-10">} </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-24-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">opencom </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-24-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-24-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">{-</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-25-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">closecom </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-25-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-25-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">-}</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-26-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">ncomment </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-26-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-26-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">opencom</span><span
|
|
class="cmmi-10"> ANY seq</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">ncomment</span><span
|
|
class="cmmi-10"> ANY seq</span><span
|
|
class="cmsy-10">}</span><span
|
|
class="cmmi-10"> closecom </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-27-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">ANY seq </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-27-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-27-3"
|
|
class="td11"> <span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">ANY </span><span
|
|
class="cmsy-10">}</span><sub><span
|
|
class="cmsy-7">⟨{</span><span
|
|
class="cmmi-7">ANY </span><span
|
|
class="cmsy-7">}</span><span
|
|
class="cmmi-7"> </span><span
|
|
class="cmr-7">(</span><span
|
|
class="cmmi-7"> opencom</span><span
|
|
class="cmmi-7"> </span><span
|
|
class="cmsy-7">|</span><span
|
|
class="cmmi-7"> closecom</span><span
|
|
class="cmmi-7"> </span><span
|
|
class="cmr-7">)</span><span
|
|
class="cmmi-7"> </span><span
|
|
class="cmsy-7">{</span><span
|
|
class="cmmi-7">ANY </span><span
|
|
class="cmsy-7">}⟩</span></sub> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-28-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-28-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">ANY </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-28-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-28-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">graphic</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> whitechar </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-29-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-29-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">any </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-29-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-29-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">graphic</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> space</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> tab </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-30-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-30-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">graphic </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-30-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-30-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">small</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> large</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> symbol</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> digit</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> special</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">"</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">'</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-31-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-31-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-32-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-32-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-33-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-33-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">small </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-33-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-33-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">ascSmall</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> uniSmall</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">_</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-34-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-34-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">ascSmall </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-34-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-34-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">a</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">b</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">z</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-35-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-35-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">uniSmall </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-35-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-35-3"
|
|
class="td11"> any Unicode lowercase letter </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-36-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-36-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-37-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-37-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-38-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-38-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">large </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-38-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-38-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">ascLarge</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> uniLarge </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-39-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-39-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">ascLarge </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-39-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-39-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">A</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">B</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">Z</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-40-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-40-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">uniLarge </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-40-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-40-3"
|
|
class="td11"> any uppercase or titlecase Unicode letter </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-41-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-41-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">symbol </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-41-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-41-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">ascSymbol</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> uniSymbol</span><sub><span
|
|
class="cmsy-7">⟨</span><span
|
|
class="cmmi-7">special</span><span
|
|
class="cmmi-7"> </span><span
|
|
class="cmsy-7">|</span><span
|
|
class="cmmi-7"> </span><span
|
|
class="pcrr7t-">_</span><span
|
|
class="cmmi-7"> </span><span
|
|
class="cmsy-7">|</span><span
|
|
class="cmmi-7"> </span><span
|
|
class="pcrr7t-">"</span><span
|
|
class="cmmi-7"> </span><span
|
|
class="cmsy-7">|</span><span
|
|
class="cmmi-7"> </span><span
|
|
class="pcrr7t-">'</span><span
|
|
class="cmsy-7">⟩</span></sub> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-42-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-42-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-43-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-43-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-44-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-44-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">ascSymbol </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-44-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-44-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">!</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">#</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">$</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">%</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">&</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">⋆</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">+</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">.</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">/</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-"><</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">=</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">></span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">?</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">@ </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-45-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-45-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-102-45-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-45-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">\</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">^</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">-</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">~</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">:</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-46-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-46-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">uniSymbol </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-46-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-46-3"
|
|
class="td11"> any Unicode symbol or punctuation </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-47-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-47-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">digit </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-47-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-47-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">ascDigit</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> uniDigit </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-48-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-48-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">ascDigit </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-48-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-48-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">0</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">1</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">9</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-49-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-49-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">uniDigit </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-49-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-49-3"
|
|
class="td11"> any Unicode decimal digit </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-50-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-50-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">octit </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-50-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-50-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">0</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">1</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">7</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-51-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-51-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">hexit </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-102-51-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-102-51-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">digit</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">A</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">F</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">a</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">f</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-52-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-52-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-102-53-"><td style="white-space:nowrap; text-align:left;" id="TBL-102-53-1"
|
|
class="td11"> </td>
|
|
</tr></table></div></div>
|
|
<a
|
|
id="dx17-177001"></a>
|
|
<a
|
|
id="dx17-177002"></a>
|
|
|
|
|
|
|
|
<a
|
|
id="dx17-177003"></a>
|
|
<a
|
|
id="dx17-177004"></a>
|
|
<a
|
|
id="dx17-177005"></a>
|
|
<a
|
|
id="dx17-177006"></a>
|
|
<a
|
|
id="dx17-177007"></a>
|
|
<a
|
|
id="dx17-177008"></a>
|
|
<a
|
|
id="dx17-177009"></a>
|
|
<a
|
|
id="dx17-177010"></a>
|
|
<a
|
|
id="dx17-177011"></a>
|
|
<a
|
|
id="dx17-177012"></a>
|
|
<a
|
|
id="dx17-177013"></a>
|
|
<a
|
|
id="dx17-177014"></a>
|
|
<a
|
|
id="dx17-177015"></a>
|
|
<a
|
|
id="dx17-177016"></a>
|
|
<a
|
|
id="dx17-177017"></a>
|
|
<a
|
|
id="dx17-177018"></a>
|
|
<a
|
|
id="dx17-177019"></a>
|
|
<a
|
|
id="dx17-177020"></a>
|
|
<a
|
|
id="dx17-177021"></a>
|
|
<a
|
|
id="dx17-177022"></a>
|
|
<a
|
|
id="dx17-177023"></a>
|
|
<a
|
|
id="dx17-177024"></a>
|
|
<a
|
|
id="dx17-177025"></a>
|
|
<a
|
|
id="dx17-177026"></a>
|
|
<a
|
|
id="dx17-177027"></a>
|
|
<a
|
|
id="dx17-177028"></a>
|
|
<a
|
|
id="dx17-177029"></a>
|
|
<a
|
|
id="dx17-177030"></a>
|
|
<a
|
|
id="dx17-177031"></a>
|
|
<a
|
|
id="dx17-177032"></a>
|
|
<a
|
|
id="dx17-177033"></a>
|
|
<a
|
|
id="dx17-177034"></a>
|
|
<a
|
|
id="dx17-177035"></a>
|
|
<a
|
|
id="dx17-177036"></a>
|
|
<a
|
|
id="dx17-177037"></a>
|
|
<div class="flushleft"
|
|
>
|
|
<p class="noindent">
|
|
|
|
|
|
|
|
<!--tex4ht:inline--><div class="tabular"><table id="TBL-103" class="tabular"
|
|
cellspacing="0" cellpadding="0"
|
|
><colgroup id="TBL-103-1g"><col
|
|
id="TBL-103-1" /><col
|
|
id="TBL-103-2" /><col
|
|
id="TBL-103-3" /><col
|
|
id="TBL-103-4" /></colgroup><tr
|
|
style="vertical-align:baseline;" id="TBL-103-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-1-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">varid </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-1-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-1-3"
|
|
class="td11"> <span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">small</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">small</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> large</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> digit</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">'</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">}</span><span
|
|
class="cmr-10">)</span><sub><span
|
|
class="cmsy-7">⟨</span><span
|
|
class="cmmi-7">reservedid</span><span
|
|
class="cmsy-7">⟩</span></sub> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-2-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">conid </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-2-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-2-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">large</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">small</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> large</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> digit</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">'</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">} </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-3-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">reservedid </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-3-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-3-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">case</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">class</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">data</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">default</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">deriving</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">do</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">else</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-4-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-103-4-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-4-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">foreign</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">if</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">import</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">in</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">infix</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">infixl</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-5-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-103-5-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-5-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">infixr</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">instance</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">let</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">module</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">newtype</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">of</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-6-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-103-6-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-6-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">then</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">type</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">where</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">_</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-7-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-8-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-9-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">varsym </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-9-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-9-3"
|
|
class="td11"> <span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">symbol</span><sub><span
|
|
class="cmsy-7">⟨</span><span
|
|
class="pcrr7t-">:</span><span
|
|
class="cmsy-7">⟩</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">symbol</span><span
|
|
class="cmsy-10">}</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">)</span><sub><span
|
|
class="cmsy-7">⟨</span><span
|
|
class="cmmi-7">reservedop</span><span
|
|
class="cmmi-7"> </span><span
|
|
class="cmsy-7">|</span><span
|
|
class="cmmi-7"> dashes</span><span
|
|
class="cmsy-7">⟩</span></sub> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-10-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">consym </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-10-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-10-3"
|
|
class="td11"> <span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">:</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">symbol</span><span
|
|
class="cmsy-10">}</span><span
|
|
class="cmr-10">)</span><sub><span
|
|
class="cmsy-7">⟨</span><span
|
|
class="cmmi-7">reservedop</span><span
|
|
class="cmsy-7">⟩</span></sub> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-11-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">reservedop </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-11-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-11-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">..</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">:</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">::</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">=</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">\</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-"><-</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">-></span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">@</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">~</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">=></span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-12-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-13-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-14-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">varid </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-14-2"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-">  </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-103-14-3"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>variables<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-15-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">conid </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-15-2"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-">  </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-103-15-3"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>constructors<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-16-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">tyvar </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-16-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-16-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">varid </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-103-16-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>type variables<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-17-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">tycon </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-17-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-17-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">conid </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-103-17-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>type constructors<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-18-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">tycls </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-18-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-18-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">conid </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-103-18-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>type classes<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-19-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">modid </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-19-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-19-3"
|
|
class="td11"> <span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">conid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">.</span><span
|
|
class="cmsy-10">}</span><span
|
|
class="cmmi-10"> conid</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-19-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>modules<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-20-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-21-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-22-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">qvarid </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-22-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-22-3"
|
|
class="td11"> <span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10"> modid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">.</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> varid </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-23-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">qconid </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-23-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-23-3"
|
|
class="td11"> <span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10"> modid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">.</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> conid </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-24-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">qtycon </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-24-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-24-3"
|
|
class="td11"> <span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10"> modid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">.</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> tycon </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-25-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">qtycls </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-25-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-25-3"
|
|
class="td11"> <span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10"> modid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">.</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> tycls </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-26-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">qvarsym </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-26-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-26-3"
|
|
class="td11"> <span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10"> modid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">.</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> varsym </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-27-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">qconsym </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-27-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-27-3"
|
|
class="td11"> <span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10"> modid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">.</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> consym </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-28-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-28-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-29-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-29-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-30-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-30-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">decimal </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-30-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-30-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">digit</span><span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">digit</span><span
|
|
class="cmsy-10">} </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-31-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-31-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">octal </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-31-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-31-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">octit</span><span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">octit</span><span
|
|
class="cmsy-10">} </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-32-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-32-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">hexadecimal </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-32-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-32-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">hexit</span><span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">hexit</span><span
|
|
class="cmsy-10">} </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-33-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-33-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-34-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-34-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-35-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-35-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">integer </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-35-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-35-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">decimal </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-36-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-36-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-103-36-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-36-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">0o</span><span
|
|
class="cmmi-10"> octal</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">0O</span><span
|
|
class="cmmi-10"> octal </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-37-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-37-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-103-37-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-37-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">0x</span><span
|
|
class="cmmi-10"> hexadecimal</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">0X</span><span
|
|
class="cmmi-10"> hexadecimal </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-38-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-38-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">float </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-38-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-38-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">decimal</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">.</span><span
|
|
class="cmmi-10"> decimal</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">exponent</span><span
|
|
class="cmr-10">] </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-39-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-39-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-103-39-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-39-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">decimal</span><span
|
|
class="cmmi-10"> exponent </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-40-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-40-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">exponent </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-40-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-40-3"
|
|
class="td11"> <span
|
|
class="cmr-10">(</span><span
|
|
class="pcrr7t-">e</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">E</span><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">+</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">-</span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> decimal </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-41-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-41-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-42-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-42-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-43-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-43-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">char </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-43-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-43-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">'</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">graphic</span><sub><span
|
|
class="cmsy-7">⟨</span><span
|
|
class="pcrr7t-">'</span><span
|
|
class="cmmi-7"> </span><span
|
|
class="cmsy-7">|</span><span
|
|
class="cmmi-7"> </span><span
|
|
class="pcrr7t-">\</span><span
|
|
class="cmsy-7">⟩</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> space</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> escape</span><sub><span
|
|
class="cmsy-7">⟨</span><span
|
|
class="pcrr7t-">\&</span><span
|
|
class="cmsy-7">⟩</span></sub><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">'</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-44-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-44-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">string </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-44-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-44-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">"</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">graphic</span><sub><span
|
|
class="cmsy-7">⟨</span><span
|
|
class="pcrr7t-">"</span><span
|
|
class="cmmi-7"> </span><span
|
|
class="cmsy-7">|</span><span
|
|
class="cmmi-7"> </span><span
|
|
class="pcrr7t-">\</span><span
|
|
class="cmsy-7">⟩</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> space</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> escape</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> gap</span><span
|
|
class="cmsy-10">}</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">"</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-45-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-45-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">escape </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-45-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-45-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">\</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10"> charesc</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> ascii</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> decimal</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">o</span><span
|
|
class="cmmi-10"> octal</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">x</span><span
|
|
class="cmmi-10"> hexadecimal</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-46-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-46-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">charesc </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-46-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-46-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">a</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">b</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">f</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">n</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">r</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">t</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">v</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">\</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">"</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">'</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">&</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-47-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-47-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">ascii </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-47-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-47-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">^</span><span
|
|
class="cmmi-10">cntrl</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">NUL</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">SOH</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">STX</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">ETX</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">EOT</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">ENQ</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">ACK</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-48-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-48-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-103-48-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-48-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">BEL</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">BS</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">HT</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">LF</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">VT</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">FF</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">CR</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">SO</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">SI</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">DLE</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-49-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-49-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-103-49-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-49-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">DC1</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">DC2</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">DC3</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">DC4</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">NAK</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">SYN</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">ETB</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">CAN</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-50-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-50-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-103-50-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-50-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">EM</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">SUB</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">ESC</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">FS</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">GS</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">RS</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">US</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">SP</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">DEL</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-51-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-51-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">cntrl </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-51-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-51-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">ascLarge</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">@</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">[</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">\</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">]</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">^</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">_</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-103-52-"><td style="white-space:nowrap; text-align:left;" id="TBL-103-52-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">gap </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-103-52-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-103-52-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">\</span><span
|
|
class="cmmi-10"> whitechar</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">whitechar</span><span
|
|
class="cmsy-10">}</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">\</span> </td>
|
|
</tr></table></div></div>
|
|
<a
|
|
id="dx17-177038"></a>
|
|
<a
|
|
id="dx17-177039"></a>
|
|
<a
|
|
id="dx17-177040"></a>
|
|
<a
|
|
id="dx17-177041"></a>
|
|
<a
|
|
id="dx17-177042"></a>
|
|
<a
|
|
id="dx17-177043"></a>
|
|
<a
|
|
id="dx17-177044"></a>
|
|
<a
|
|
id="dx17-177045"></a>
|
|
<a
|
|
id="dx17-177046"></a>
|
|
|
|
|
|
|
|
<a
|
|
id="dx17-177047"></a>
|
|
<a
|
|
id="dx17-177048"></a>
|
|
<a
|
|
id="dx17-177049"></a>
|
|
<a
|
|
id="dx17-177050"></a>
|
|
<a
|
|
id="dx17-177051"></a>
|
|
<a
|
|
id="dx17-177052"></a>
|
|
<a
|
|
id="dx17-177053"></a>
|
|
<a
|
|
id="dx17-177054"></a>
|
|
<a
|
|
id="dx17-177055"></a>
|
|
<a
|
|
id="dx17-177056"></a>
|
|
<a
|
|
id="dx17-177057"></a>
|
|
<a
|
|
id="dx17-177058"></a>
|
|
<a
|
|
id="dx17-177059"></a>
|
|
<a
|
|
id="dx17-177060"></a>
|
|
<a
|
|
id="dx17-177061"></a>
|
|
<a
|
|
id="dx17-177062"></a>
|
|
<a
|
|
id="dx17-177063"></a>
|
|
<a
|
|
id="dx17-177064"></a>
|
|
<p class="noindent">
|
|
<h3 class="sectionHead"><span class="titlemark">10.3 </span> <a
|
|
id="x17-17800010.3"></a>Layout</h3>
|
|
<a
|
|
id="dx17-178001"></a>
|
|
<p class="noindent"> Section <a
|
|
href="haskellch2.html#x7-210002.7">2.7<!--tex4ht:ref: lexemes-layout --></a> gives an informal discussion of the layout rule. This section defines it more precisely.
|
|
<p class="noindent"> The meaning of a Haskell program may depend on its <span
|
|
class="ptmri7t-">layout</span>. The effect of layout on its meaning can be completely
|
|
described by adding braces and semicolons in places determined by the layout. The meaning of this augmented
|
|
program is now layout insensitive.
|
|
<p class="noindent"> The effect of layout is specified in this section by describing how to add braces and semicolons to a laid-out
|
|
program. The specification takes the form of a function <span
|
|
class="cmmi-10">L</span> that performs the translation. The input to <span
|
|
class="cmmi-10">L</span>
|
|
is:
|
|
<ul class="itemize1">
|
|
<li class="itemize">A stream of lexemes as specified by the lexical syntax in the Haskell report, with the following additional
|
|
tokens:
|
|
<ul class="itemize2">
|
|
<li class="itemize">If a <span
|
|
class="pcrr7t-">let</span>, <span
|
|
class="pcrr7t-">where</span>, <span
|
|
class="pcrr7t-">do</span>, or <span
|
|
class="pcrr7t-">of</span> keyword is not followed by the lexeme <span
|
|
class="pcrr7t-">{</span>, the token <span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">n</span><span
|
|
class="cmsy-10">}</span> is inserted
|
|
after the keyword, where <span
|
|
class="cmmi-10">n</span> is the indentation of the next lexeme if there is one, or <span
|
|
class="cmr-10">0</span> if the end of
|
|
file has been reached.
|
|
</li>
|
|
<li class="itemize">If the first lexeme of a module is not <span
|
|
class="pcrr7t-">{</span> or <span
|
|
class="pcrr7t-">module</span>, then it is preceded by <span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">n</span><span
|
|
class="cmsy-10">}</span> where <span
|
|
class="cmmi-10">n</span> is the
|
|
indentation of the lexeme.
|
|
</li>
|
|
<li class="itemize">Where the start of a lexeme is preceded only by white space on the same line, this lexeme is preceded by
|
|
<span
|
|
class="cmmi-10">< n ></span> where <span
|
|
class="cmmi-10">n</span> is the indentation of the lexeme, provided that it is not, as a consequence of the first two
|
|
|
|
|
|
|
|
rules, preceded by <span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">n</span><span
|
|
class="cmsy-10">}</span>. (NB: a string literal may span multiple lines – Section <a
|
|
href="haskellch2.html#x7-200002.6">2.6<!--tex4ht:ref: lexemes-char --></a>. So in the fragment
|
|
<div class="quote">
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-342">
|
|
  f = ("Hello \
|
|
 <br />          \Bill", "Jake")
|
|
</div>
|
|
<p class="noindent"></div>
|
|
<p class="noindent"> There is no <span
|
|
class="cmmi-10">< n ></span> inserted before the <span
|
|
class="pcrr7t-">\Bill</span>, because it is not the beginning of a complete lexeme; nor
|
|
before the <span
|
|
class="pcrr7t-">,</span>, because it is not preceded only by white space.)</li></ul>
|
|
</li>
|
|
<li class="itemize">A stack of “layout contexts”, in which each element is either:
|
|
<ul class="itemize2">
|
|
<li class="itemize">Zero, indicating that the enclosing context is explicit (i.e. the programmer supplied the opening
|
|
brace). If the innermost context is 0, then no layout tokens will be inserted until either the
|
|
enclosing context ends or a new context is pushed.
|
|
</li>
|
|
<li class="itemize">A positive integer, which is the indentation column of the enclosing layout context.</li></ul>
|
|
</li></ul>
|
|
<p class="noindent"> The “indentation” of a lexeme is the column number of the first character of that lexeme; the indentation of a line is
|
|
the indentation of its leftmost lexeme. To determine the column number, assume a fixed-width font with the following
|
|
conventions:
|
|
<ul class="itemize1">
|
|
<li class="itemize">The characters <span
|
|
class="cmmi-10">newline</span>, <span
|
|
class="cmmi-10">return</span>, <span
|
|
class="cmmi-10">linefeed</span>, and <span
|
|
class="cmmi-10">formfeed</span>, all start a new line.
|
|
</li>
|
|
<li class="itemize">The first column is designated column 1, not 0.
|
|
</li>
|
|
<li class="itemize">Tab stops are 8 characters apart.
|
|
</li>
|
|
<li class="itemize">A tab character causes the insertion of enough spaces to align the current position with the next tab
|
|
stop.</li></ul>
|
|
<p class="noindent"> For the purposes of the layout rule, Unicode characters in a source program are considered to be of the
|
|
same, fixed, width as an ASCII character. However, to avoid visual confusion, programmers should
|
|
avoid writing programs in which the meaning of implicit layout depends on the width of non-space
|
|
characters.
|
|
<p class="noindent"> The application
|
|
|
|
|
|
|
|
<span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> tokens</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[]</span>
|
|
delivers a layout-insensitive translation of <span
|
|
class="cmmi-10">tokens</span>, where <span
|
|
class="cmmi-10">tokens</span> is the result of lexically analysing a module and
|
|
adding column-number indicators to it as described above. The definition of <span
|
|
class="cmmi-10">L</span> is as follows, where we use “<span
|
|
class="cmr-10">:</span>” as a
|
|
stream construction operator, and “<span
|
|
class="cmr-10">[]</span>” for the empty stream.
|
|
<div class="center"
|
|
>
|
|
<p class="noindent">
|
|
<p class="noindent">
|
|
<div class="array"> <table id="TBL-104" class="array"
|
|
cellpadding="0" cellspacing="0"
|
|
><colgroup id="TBL-104-1g"><col
|
|
id="TBL-104-1" /><col
|
|
id="TBL-104-2" /><col
|
|
id="TBL-104-3" /><col
|
|
id="TBL-104-4" /></colgroup><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">< n ></span><span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ts</span><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">m </span><span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ms</span><span
|
|
class="cmr-10">) </span></div></td><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">= </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="pcrr7t-">;</span><span
|
|
class="cmmi-10">  </span><span
|
|
class="cmr-10">:</span> <span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> ts</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">m </span><span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ms</span><span
|
|
class="cmr-10">)) </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> if<span
|
|
class="cmmi-10"> m </span><span
|
|
class="cmr-10">= </span><span
|
|
class="cmmi-10">n </span></div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> </div></td><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">= </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="pcrr7t-">}</span><span
|
|
class="cmmi-10">  </span><span
|
|
class="cmr-10">:</span> <span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">< n ></span><span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ts</span><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> ms</span><span
|
|
class="cmr-10">) </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> if<span
|
|
class="cmmi-10"> n < m </span></div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">< n ></span><span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ts</span><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> ms </span></div></td><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">= </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> ts</span><span
|
|
class="cmmi-10"> ms </span></div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> </div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">n</span><span
|
|
class="cmsy-10">} </span><span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ts</span><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">m </span><span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ms</span><span
|
|
class="cmr-10">) </span></div></td><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">= </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="pcrr7t-">{</span><span
|
|
class="cmmi-10">  </span><span
|
|
class="cmr-10">:</span> <span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> ts</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">m </span><span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ms</span><span
|
|
class="cmr-10">)) </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> if<span
|
|
class="cmmi-10"> n > m</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">Note</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">1) </span></div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">n</span><span
|
|
class="cmsy-10">} </span><span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ts</span><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[] </span></div></td><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">= </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="pcrr7t-">{</span><span
|
|
class="cmmi-10">  </span><span
|
|
class="cmr-10">:</span> <span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> ts</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">n</span><span
|
|
class="cmr-10">]) </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> if<span
|
|
class="cmmi-10"> n > </span><span
|
|
class="cmr-10">0</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">Note</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">1) </span></div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">n</span><span
|
|
class="cmsy-10">} </span><span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ts</span><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> ms </span></div></td><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">= </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="pcrr7t-">{</span><span
|
|
class="cmmi-10">  </span><span
|
|
class="cmr-10">:</span> <span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">}</span><span
|
|
class="cmmi-10">  </span><span
|
|
class="cmr-10">:</span> <span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">< n ></span><span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ts</span><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> ms</span><span
|
|
class="cmr-10">) </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">Note</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">2) </span></div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> </div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="pcrr7t-">}</span> <span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ts</span><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(0 : </span><span
|
|
class="cmmi-10">ms</span><span
|
|
class="cmr-10">) </span></div></td><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">= </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="pcrr7t-">}</span><span
|
|
class="cmmi-10">  </span><span
|
|
class="cmr-10">:</span> <span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> ts</span><span
|
|
class="cmmi-10"> ms</span><span
|
|
class="cmr-10">) </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">Note</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">3) </span></div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="pcrr7t-">}</span> <span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ts</span><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> ms </span></div></td><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">= </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> parse-error </div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">Note</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">3) </span></div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> </div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="pcrr7t-">{</span> <span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ts</span><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> ms </span></div></td><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">= </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="pcrr7t-">{</span><span
|
|
class="cmmi-10">  </span><span
|
|
class="cmr-10">:</span> <span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> ts</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(0 : </span><span
|
|
class="cmmi-10">ms</span><span
|
|
class="cmr-10">)) </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">Note</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">4) </span></div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> </div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">t </span><span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ts</span><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">m </span><span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ms</span><span
|
|
class="cmr-10">) </span></div></td><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">= </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="pcrr7t-">}</span><span
|
|
class="cmmi-10">  </span><span
|
|
class="cmr-10">:</span> <span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">t </span><span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ts</span><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> ms</span><span
|
|
class="cmr-10">) </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> if<span
|
|
class="cmmi-10"> m∕ </span><span
|
|
class="cmr-10">= 0</span><span
|
|
class="cmmi-10"> </span>and<span
|
|
class="cmmi-10"> </span>parse-error<span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">t</span><span
|
|
class="cmr-10">) </span></div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> </div></td><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> </div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> </div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">Note</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">5) </span></div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">t </span><span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ts</span><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> ms </span></div></td><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">= </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmmi-10">t</span><span
|
|
class="cmmi-10">  </span><span
|
|
class="cmr-10">:</span> <span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> ts</span><span
|
|
class="cmmi-10"> ms</span><span
|
|
class="cmr-10">) </span></div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> </div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[]</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[] </span></div></td><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">= </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">[] </span></div></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;"><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="cmmi-10">L</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[]</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">m </span><span
|
|
class="cmr-10">: </span><span
|
|
class="cmmi-10">ms</span><span
|
|
class="cmr-10">) </span></div></td><td style="white-space:nowrap; text-align:center;"
|
|
><div class="td11"> <span
|
|
class="cmr-10">= </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> <span
|
|
class="pcrr7t-">}</span><span
|
|
class="cmmi-10">  </span><span
|
|
class="cmr-10">:</span> <span
|
|
class="cmmi-10"> L</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[]</span><span
|
|
class="cmmi-10"> ms </span></div></td><td style="white-space:nowrap; text-align:left;"
|
|
><div class="td11"> if<span
|
|
class="cmmi-10"> m</span><span
|
|
class="cmmi-10">≠</span><span
|
|
class="cmr-10">0</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">Note</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">6) </span></div></td>
|
|
</tr></table> </div>
|
|
</div>
|
|
<dl class="description"><dt class="description">
|
|
<span
|
|
class="ptmb7t-">Note 1.</span> </dt><dd
|
|
class="description">A nested context must be further indented than the enclosing context (<span
|
|
class="cmmi-10">n > m</span>). If not, <span
|
|
class="cmmi-10">L</span> fails, and the
|
|
compiler should indicate a layout error. An example is:
|
|
<div class="quote">
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-343">
|
|
  f x = let
|
|
 <br />           h y = let
|
|
 <br />    p z = z
|
|
 <br />                 in p
|
|
 <br />        in h
|
|
</div>
|
|
<p class="noindent"></div>
|
|
<p class="noindent"> Here, the definition of <span
|
|
class="pcrr7t-">p</span> is indented less than the indentation of the enclosing context, which is set in this case
|
|
by the definition of <span
|
|
class="pcrr7t-">h</span>.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="ptmb7t-">Note 2.</span> </dt><dd
|
|
class="description">If the first token after a <span
|
|
class="pcrr7t-">where</span> (say) is not indented more than the enclosing layout context, then the block
|
|
must be empty, so empty braces are inserted. The <span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10">n</span><span
|
|
class="cmsy-10">} </span>token is replaced by <span
|
|
class="cmmi-10">< n ></span>, to mimic the situation if the
|
|
empty braces had been explicit.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="ptmb7t-">Note 3.</span> </dt><dd
|
|
class="description">By matching against 0 for the current layout context, we ensure that an explicit close brace can only match
|
|
an explicit open brace. A parse error results if an explicit close brace matches an implicit open
|
|
brace.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="ptmb7t-">Note 4.</span> </dt><dd
|
|
class="description">This clause means that all brace pairs are treated as explicit layout contexts, including labelled
|
|
construction and update (Section <a
|
|
href="haskellch3.html#x8-490003.15">3.15<!--tex4ht:ref: field-ops --></a>). This is a difference between this formulation and Haskell
|
|
1.4.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="ptmb7t-">Note 5.</span> </dt><dd
|
|
class="description">The side condition parse-error<span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">t</span><span
|
|
class="cmr-10">)</span> is to be interpreted as follows: if the tokens generated so far by <span
|
|
class="cmmi-10">L</span> together
|
|
with the next token <span
|
|
class="cmmi-10">t</span> represent an invalid prefix of the Haskell grammar, and the tokens generated so far by <span
|
|
class="cmmi-10">L</span>
|
|
followed by the token “<span
|
|
class="pcrr7t-">}</span>” represent a valid prefix of the Haskell grammar, then parse-error<span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">t</span><span
|
|
class="cmr-10">)</span> is
|
|
true.
|
|
<p class="noindent"> The test <span
|
|
class="cmmi-10">m∕ </span><span
|
|
class="cmr-10">= 0 </span>checks that an implicitly-added closing brace would match an implicit open
|
|
brace.
|
|
</dd><dt class="description">
|
|
<span
|
|
class="ptmb7t-">Note 6.</span> </dt><dd
|
|
class="description">At the end of the input, any pending close-braces are inserted. It is an error at this point to be within a
|
|
non-layout context (i.e.  <span
|
|
class="cmmi-10">m</span><span
|
|
class="cmmi-10">  </span><span
|
|
class="cmr-10">=</span> <span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">0</span>).</dd></dl>
|
|
<p class="noindent"> If none of the rules given above matches, then the algorithm fails. It can fail for instance when the end of the input is
|
|
reached, and a non-layout context is active, since the close brace is missing. Some error conditions are not detected by
|
|
the algorithm, although they could be: for example <span
|
|
class="pcrr7t-">let</span><span
|
|
class="pcrr7t-"> }</span>.
|
|
<p class="noindent"> Note 1 implements the feature that layout processing can be stopped prematurely by a parse error. For example
|
|
<div class="quote">
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-344">
|
|
        let x = e; y = x in e'
|
|
</div>
|
|
<p class="noindent"></div>
|
|
<p class="noindent"> is valid, because it translates to
|
|
<div class="quote">
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-345">
|
|
        let { x = e; y = x } in e'
|
|
</div>
|
|
<p class="noindent"></div>
|
|
<p class="noindent"> The close brace is inserted due to the parse error rule above.
|
|
|
|
|
|
|
|
<h3 class="sectionHead"><span class="titlemark">10.4 </span> <a
|
|
id="x17-17900010.4"></a>Literate comments</h3>
|
|
<a
|
|
id="dx17-179001"></a>
|
|
<p class="noindent"> The “literate comment” convention, first developed by Richard Bird and Philip Wadler for Orwell, and inspired in
|
|
turn by Donald Knuth’s “literate programming”, is an alternative style for encoding Haskell source code. The literate
|
|
style encourages comments by making them the default. A line in which “<span
|
|
class="pcrr7t-">></span>” is the first character is treated as part of
|
|
the program; all other lines are comments.
|
|
<p class="noindent"> The program text is recovered by taking only those lines beginning with “<span
|
|
class="pcrr7t-">></span>”, and replacing the leading “<span
|
|
class="pcrr7t-">></span>” with a
|
|
space. Layout and comments apply exactly as described in Chapter <a
|
|
href="#x17-17500010">10<!--tex4ht:ref: syntax --></a> in the resulting text.
|
|
<p class="noindent"> To capture some cases where one omits an “<span
|
|
class="pcrr7t-">></span>” by mistake, it is an error for a program line to appear adjacent to a
|
|
non-blank comment line, where a line is taken as blank if it consists only of whitespace.
|
|
<p class="noindent"> By convention, the style of comment is indicated by the file extension, with “<span
|
|
class="pcrr7t-">.hs</span>” indicating a usual Haskell file
|
|
and “<span
|
|
class="pcrr7t-">.lhs</span>” indicating a literate Haskell file. Using this style, a simple factorial program would be:
|
|
<div class="quote">
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-346">
|
|
   This literate program prompts the user for a number
|
|
 <br />   and prints the factorial of that number:
|
|
 <br />
|
|
 <br />> main :: IO ()
|
|
 <br />
|
|
 <br />> main = do putStr "Enter a number: "
|
|
 <br />>           l <- readLine
|
|
 <br />>           putStr "n!= "
|
|
 <br />>           print (fact (read l))
|
|
 <br />
|
|
 <br />  This is the factorial function.
|
|
 <br />
|
|
 <br />> fact :: Integer -> Integer
|
|
 <br />> fact 0 = 1
|
|
 <br />> fact n = n ⋆ fact (n-1)
|
|
</div>
|
|
<p class="noindent"></div>
|
|
<p class="noindent"> An alternative style of literate programming is particularly suitable for use with the LaTeX text processing
|
|
system. In this convention, only those parts of the literate program that are entirely enclosed between
|
|
<span
|
|
class="pcrr7t-">\begin{code}</span><span
|
|
class="cmmi-10">…</span><span
|
|
class="pcrr7t-">\end{code}</span> delimiters are treated as program text; all other lines are comments. More
|
|
precisely:
|
|
<ul class="itemize1">
|
|
<li class="itemize">Program code begins on the first line following a line that begins <span
|
|
class="pcrr7t-">\begin{code}</span>.
|
|
</li>
|
|
<li class="itemize">Program code ends just before a subsequent line that begins <span
|
|
class="pcrr7t-">\end{code}</span> (ignoring string literals, of
|
|
course).</li></ul>
|
|
<p class="noindent"> It is not necessary to insert additional blank lines before or after these delimiters, though it may be stylistically
|
|
desirable. For example,
|
|
<div class="quote">
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-347">
|
|
\documentstyle{article}
|
|
 <br />
|
|
 <br />\begin{document}
|
|
 <br />
|
|
 <br />\chapter{Introduction}
|
|
 <br />
|
|
 <br />This is a trivial program that prints the first 20 factorials.
|
|
 <br />
|
|
 <br />\begin{code}
|
|
 <br />main :: IO ()
|
|
 <br />main =  print [ (n, product [1..n]) | n <- [1..20]]
|
|
 <br />\end{code}
|
|
 <br />
|
|
 <br />\end{document}
|
|
</div>
|
|
<p class="noindent"></div>
|
|
<p class="noindent"> This style uses the same file extension. It is not advisable to mix these two styles in the same file.
|
|
|
|
|
|
|
|
<h3 class="sectionHead"><span class="titlemark">10.5 </span> <a
|
|
id="x17-18000010.5"></a>Context-Free Syntax</h3>
|
|
<div class="flushleft"
|
|
>
|
|
<p class="noindent">
|
|
|
|
|
|
|
|
<!--tex4ht:inline--><div class="tabular"> <table id="TBL-105" class="tabular"
|
|
cellspacing="0" cellpadding="0"
|
|
><colgroup id="TBL-105-1g"><col
|
|
id="TBL-105-1" /><col
|
|
id="TBL-105-2" /><col
|
|
id="TBL-105-3" /><col
|
|
id="TBL-105-4" /></colgroup><tr
|
|
style="vertical-align:baseline;" id="TBL-105-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-1-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">module </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-1-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-1-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">module</span><span
|
|
class="cmmi-10"> modid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">exports</span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">where</span><span
|
|
class="cmmi-10"> body</span><span
|
|
class="cmmi-10"> </span><a
|
|
id="dx17-180001"></a> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-2-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-2-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-2-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">body</span><a
|
|
id="dx17-180002"></a> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-3-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">body </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-3-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-3-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">{</span><span
|
|
class="cmmi-10"> impdecls</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">;</span><span
|
|
class="cmmi-10"> topdecls</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">}</span><a
|
|
id="dx17-180003"></a> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-4-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-4-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-4-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">{</span><span
|
|
class="cmmi-10"> impdecls</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">}</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-5-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-5-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-5-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">{</span><span
|
|
class="cmmi-10"> topdecls</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">}</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-6-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-7-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-8-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">impdecls </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-8-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-8-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">impdecl</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">;</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">;</span><span
|
|
class="cmmi-10"> impdecl</span><sub><span
|
|
class="cmmi-7">n</span></sub> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-8-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">1)</span><a
|
|
id="dx17-180004"></a> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-9-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-10-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-11-1"
|
|
class="td11"> <a
|
|
id="dx17-180005"></a><span
|
|
class="cmmi-10">exports </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-11-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-11-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> export</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> export</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-11-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-12-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-13-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-14-1"
|
|
class="td11"> <a
|
|
id="dx17-180006"></a><span
|
|
class="cmmi-10">export </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-14-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-14-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qvar </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-15-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-15-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-15-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qtycon</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">(..)</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> cname</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> cname</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span><span
|
|
class="cmr-10">] </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-15-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-16-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-16-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-16-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qtycls</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">(..)</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> qvar</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> qvar</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span><span
|
|
class="cmr-10">] </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-16-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-17-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-17-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-17-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">module</span><span
|
|
class="cmmi-10"> modid </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-18-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-19-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-20-1"
|
|
class="td11"> <a
|
|
id="dx17-180007"></a><span
|
|
class="cmmi-10">impdecl </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-20-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-20-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">import</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">qualified</span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> modid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">as</span><span
|
|
class="cmmi-10"> modid</span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">impspec</span><span
|
|
class="cmr-10">] </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-21-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-21-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-21-3"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-21-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>empty declaration<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-22-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-23-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-24-1"
|
|
class="td11"> <a
|
|
id="dx17-180008"></a><span
|
|
class="cmmi-10">impspec </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-24-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-24-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> import</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> import</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-24-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-25-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-25-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-25-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">hiding</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> import</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> import</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-25-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-26-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-27-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-28-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-28-1"
|
|
class="td11"> <a
|
|
id="dx17-180009"></a><span
|
|
class="cmmi-10">import </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-28-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-28-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">var </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-29-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-29-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-29-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-29-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">tycon</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">(..)</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> cname</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> cname</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span><span
|
|
class="cmr-10">] </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-29-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-30-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-30-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-30-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-30-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">tycls</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">(..)</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> var</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> var</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span><span
|
|
class="cmr-10">] </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-30-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-31-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-31-1"
|
|
class="td11"> <a
|
|
id="dx17-180010"></a><span
|
|
class="cmmi-10">cname </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-31-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-31-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">var</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> con </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-32-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-32-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-33-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-33-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-34-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-34-1"
|
|
class="td11"> <a
|
|
id="dx17-180011"></a><span
|
|
class="cmmi-10">topdecls </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-34-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-34-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">topdecl</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">;</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">;</span><span
|
|
class="cmmi-10"> topdecl</span><sub><span
|
|
class="cmmi-7">n</span></sub> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-34-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-35-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-35-1"
|
|
class="td11"> <a
|
|
id="dx17-180012"></a><span
|
|
class="cmmi-10">topdecl </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-35-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-35-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">type</span><span
|
|
class="cmmi-10"> simpletype</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">=</span><span
|
|
class="cmmi-10"> type </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-36-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-36-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-36-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-36-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">data</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">context</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">=></span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> simpletype</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">=</span><span
|
|
class="cmmi-10"> constrs</span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">deriving</span><span
|
|
class="cmr-10">]</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-37-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-37-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-37-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-37-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">newtype</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">context</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">=></span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> simpletype</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">=</span><span
|
|
class="cmmi-10"> newconstr</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">deriving</span><span
|
|
class="cmr-10">] </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-38-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-38-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-38-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-38-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">class</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">scontext</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">=></span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> tycls</span><span
|
|
class="cmmi-10"> tyvar</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">where</span><span
|
|
class="cmmi-10"> cdecls</span><span
|
|
class="cmr-10">] </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-39-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-39-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-39-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-39-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">instance</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">scontext</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">=></span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> qtycls</span><span
|
|
class="cmmi-10"> inst</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">where</span><span
|
|
class="cmmi-10"> idecls</span><span
|
|
class="cmr-10">] </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-40-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-40-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-40-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-40-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">default</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10">type</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> type</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-40-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-41-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-41-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-41-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-41-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">foreign</span><span
|
|
class="cmmi-10"> fdecl </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-42-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-42-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-42-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-42-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">decl </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-43-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-43-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-44-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-44-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-45-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-45-1"
|
|
class="td11"> <a
|
|
id="dx17-180013"></a><span
|
|
class="cmmi-10">decls </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-45-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-45-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">{</span><span
|
|
class="cmmi-10"> decl</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">;</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">;</span><span
|
|
class="cmmi-10"> decl</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">}</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-45-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-46-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-46-1"
|
|
class="td11"> <a
|
|
id="dx17-180014"></a><span
|
|
class="cmmi-10">decl </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-46-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-46-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">gendecl </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-47-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-47-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-47-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-47-3"
|
|
class="td11"> <span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">funlhs</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">pat</span><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> rhs</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-48-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-48-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-49-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-49-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-50-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-50-1"
|
|
class="td11"> <a
|
|
id="dx17-180015"></a><span
|
|
class="cmmi-10">cdecls </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-50-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-50-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">{</span><span
|
|
class="cmmi-10"> cdecl</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">;</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">;</span><span
|
|
class="cmmi-10"> cdecl</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">}</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-50-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-51-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-51-1"
|
|
class="td11"> <a
|
|
id="dx17-180016"></a><span
|
|
class="cmmi-10">cdecl </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-51-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-51-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">gendecl </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-52-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-52-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-52-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-52-3"
|
|
class="td11"> <span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">funlhs</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> var</span><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> rhs </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-53-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-53-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-54-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-54-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-55-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-55-1"
|
|
class="td11"> <a
|
|
id="dx17-180017"></a><span
|
|
class="cmmi-10">idecls </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-55-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-55-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">{</span><span
|
|
class="cmmi-10"> idecl</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">;</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">;</span><span
|
|
class="cmmi-10"> idecl</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">}</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-55-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-56-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-56-1"
|
|
class="td11"> <a
|
|
id="dx17-180018"></a><span
|
|
class="cmmi-10">idecl </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-56-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-56-3"
|
|
class="td11"> <span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">funlhs</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> var</span><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> rhs </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-57-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-57-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-57-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-57-3"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-57-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>empty<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-58-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-58-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-59-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-59-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-60-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-60-1"
|
|
class="td11"> <a
|
|
id="dx17-180019"></a><span
|
|
class="cmmi-10">gendecl </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-60-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-60-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">vars</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">::</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">context</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">=></span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> type </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-60-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>type signature<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-61-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-61-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-61-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-61-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">fixity</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">integer</span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> ops </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-61-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>fixity declaration<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-62-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-62-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-62-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-62-3"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-62-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>empty declaration<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-63-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-63-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-64-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-64-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-65-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-65-1"
|
|
class="td11"> <a
|
|
id="dx17-180020"></a><span
|
|
class="cmmi-10">ops </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-65-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-65-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">op</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> op</span><sub><span
|
|
class="cmmi-7">n</span></sub> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-65-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">1) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-66-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-66-1"
|
|
class="td11"> <a
|
|
id="dx17-180021"></a><span
|
|
class="cmmi-10">vars </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-66-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-66-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">var</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> var</span><sub><span
|
|
class="cmmi-7">n</span></sub> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-66-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">1) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-67-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-67-1"
|
|
class="td11"> <a
|
|
id="dx17-180022"></a><span
|
|
class="cmmi-10">fixity </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-67-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-67-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">infixl</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">infixr</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">infix</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-68-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-68-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-69-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-69-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-70-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-70-1"
|
|
class="td11"> <a
|
|
id="dx17-180023"></a><span
|
|
class="cmmi-10">type </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-70-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-70-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">btype</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">-></span><span
|
|
class="cmmi-10"> type</span><span
|
|
class="cmr-10">] </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-70-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>function type<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-71-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-71-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-72-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-72-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-73-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-73-1"
|
|
class="td11"> <a
|
|
id="dx17-180024"></a><span
|
|
class="cmmi-10">btype </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-73-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-73-3"
|
|
class="td11"> <span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">btype</span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> atype </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-73-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>type application<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-74-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-74-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-75-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-75-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-76-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-76-1"
|
|
class="td11"> <a
|
|
id="dx17-180025"></a><span
|
|
class="cmmi-10">atype </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-76-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-76-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">gtycon </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-77-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-77-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-77-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-77-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">tyvar </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-78-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-78-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-78-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-78-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> type</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> type</span><sub><span
|
|
class="cmmi-7">k</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-78-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>tuple type<span
|
|
class="cmmi-10">,</span><span
|
|
class="cmmi-10"> k </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">2) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-79-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-79-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-79-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-79-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">[</span><span
|
|
class="cmmi-10"> type</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">]</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-79-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>list type<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-80-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-80-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-80-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-80-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> type</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-80-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>parenthesized constructor<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-81-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-81-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-82-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-82-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-83-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-83-1"
|
|
class="td11"> <a
|
|
id="dx17-180026"></a><span
|
|
class="cmmi-10">gtycon </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-83-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-83-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qtycon </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-84-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-84-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-84-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-84-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">()</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-84-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>unit type<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-85-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-85-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-85-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-85-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">[]</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-85-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>list constructor<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-86-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-86-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-86-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-86-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(->)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-86-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>function constructor<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-87-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-87-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-87-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-87-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(,</span><span
|
|
class="cmsy-10">{</span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmsy-10">}</span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-87-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>tupling constructors<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-88-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-88-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-89-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-89-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-90-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-90-1"
|
|
class="td11"> <a
|
|
id="dx17-180027"></a><span
|
|
class="cmmi-10">context </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-90-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-90-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">class </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-91-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-91-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-91-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-91-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> class</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> class</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-91-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-92-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-92-1"
|
|
class="td11"> <a
|
|
id="dx17-180028"></a><span
|
|
class="cmmi-10">class </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-92-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-92-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qtycls</span><span
|
|
class="cmmi-10"> tyvar </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-93-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-93-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-93-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-93-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qtycls</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> tyvar</span><span
|
|
class="cmmi-10"> atype</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> atype</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-93-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">1) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-94-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-94-1"
|
|
class="td11"> <a
|
|
id="dx17-180029"></a><span
|
|
class="cmmi-10">scontext </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-94-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-94-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">simpleclass </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-95-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-95-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-95-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-95-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> simpleclass</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> simpleclass</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-95-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-96-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-96-1"
|
|
class="td11"> <a
|
|
id="dx17-180030"></a><span
|
|
class="cmmi-10">simpleclass </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-96-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-96-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qtycls</span><span
|
|
class="cmmi-10"> tyvar </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-97-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-97-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-98-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-98-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-99-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-99-1"
|
|
class="td11"> <a
|
|
id="dx17-180031"></a><span
|
|
class="cmmi-10">simpletype </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-99-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-99-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">tycon</span><span
|
|
class="cmmi-10"> tyvar</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> tyvar</span><sub><span
|
|
class="cmmi-7">k</span></sub> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-99-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">k </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-100-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-100-1"
|
|
class="td11"> <a
|
|
id="dx17-180032"></a><span
|
|
class="cmmi-10">constrs </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-100-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-100-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">constr</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">|</span><span
|
|
class="cmmi-10"> constr</span><sub><span
|
|
class="cmmi-7">n</span></sub> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-100-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">1) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-101-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-101-1"
|
|
class="td11"> <a
|
|
id="dx17-180033"></a><span
|
|
class="cmmi-10">constr </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-101-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-101-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">con</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">!</span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> atype</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">!</span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> atype</span><sub><span
|
|
class="cmmi-7">k</span></sub> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-101-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>arity<span
|
|
class="cmmi-10"> con</span><span
|
|
class="cmmi-10">  </span><span
|
|
class="cmr-10">=</span> <span
|
|
class="cmmi-10"> k,</span><span
|
|
class="cmmi-10"> k </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-102-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-102-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-102-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-102-3"
|
|
class="td11"> <span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">btype</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">!</span><span
|
|
class="cmmi-10"> atype</span><span
|
|
class="cmr-10">)</span><span
|
|
class="cmmi-10"> conop</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">btype</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">!</span><span
|
|
class="cmmi-10"> atype</span><span
|
|
class="cmr-10">) </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-102-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>infix<span
|
|
class="cmmi-10"> conop</span><span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-103-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-103-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-103-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-103-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">con</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">{</span><span
|
|
class="cmmi-10"> fielddecl</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> fielddecl</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">}</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-103-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-104-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-104-1"
|
|
class="td11"> <a
|
|
id="dx17-180034"></a><span
|
|
class="cmmi-10">newconstr </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-104-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-104-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">con</span><span
|
|
class="cmmi-10"> atype </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-105-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-105-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-105-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-105-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">con</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">{</span><span
|
|
class="cmmi-10"> var</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">::</span><span
|
|
class="cmmi-10"> type</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">}</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-106-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-106-1"
|
|
class="td11"> <a
|
|
id="dx17-180035"></a><span
|
|
class="cmmi-10">fielddecl </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-106-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-106-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">vars</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">::</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">type</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">!</span><span
|
|
class="cmmi-10"> atype</span><span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-107-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-107-1"
|
|
class="td11"> <a
|
|
id="dx17-180036"></a><span
|
|
class="cmmi-10">deriving </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-107-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-107-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">deriving</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">dclass</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10">dclass</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> dclass</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="pcrr7t-">)</span><span
|
|
class="cmr-10">) </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-107-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-108-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-108-1"
|
|
class="td11"> <a
|
|
id="dx17-180037"></a><span
|
|
class="cmmi-10">dclass </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-108-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-108-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qtycls </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-109-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-109-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-110-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-110-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-111-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-111-1"
|
|
class="td11"> <a
|
|
id="dx17-180038"></a><span
|
|
class="cmmi-10">inst </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-111-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-111-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">gtycon </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-112-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-112-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-112-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-112-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> gtycon</span><span
|
|
class="cmmi-10"> tyvar</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> tyvar</span><sub><span
|
|
class="cmmi-7">k</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-112-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">k </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0</span><span
|
|
class="cmmi-10">,</span><span
|
|
class="cmmi-10"> tyvars</span><span
|
|
class="cmmi-10"> </span>distinct<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-113-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-113-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-113-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-113-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> tyvar</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> tyvar</span><sub><span
|
|
class="cmmi-7">k</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-113-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">k </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">2</span><span
|
|
class="cmmi-10">,</span><span
|
|
class="cmmi-10"> tyvars</span><span
|
|
class="cmmi-10"> </span>distinct<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-114-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-114-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-114-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-114-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">[</span><span
|
|
class="cmmi-10"> tyvar</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">]</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-115-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-115-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-115-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-115-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> tyvar</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">-></span><span
|
|
class="cmmi-10"> tyvar</span><sub><span
|
|
class="cmr-7">2</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-115-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmmi-10">tyvar</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span>and<span
|
|
class="cmmi-10"> tyvar</span><sub><span
|
|
class="cmr-7">2</span></sub><span
|
|
class="cmmi-10"> </span>distinct </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-116-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-116-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td></tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-117-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-117-1"
|
|
class="td11"></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-118-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-118-1"
|
|
class="td11"> <a
|
|
id="dx17-180039"></a><span
|
|
class="cmmi-10">fdecl </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-118-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-118-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">import</span><span
|
|
class="cmmi-10"> callconv</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">safety</span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> impent</span><span
|
|
class="cmmi-10"> var</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">::</span><span
|
|
class="cmmi-10"> ftype </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-118-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>define variable<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-119-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-119-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-119-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-119-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">export</span><span
|
|
class="cmmi-10"> callconv</span><span
|
|
class="cmmi-10"> expent</span><span
|
|
class="cmmi-10"> var</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">::</span><span
|
|
class="cmmi-10"> ftype </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-119-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>expose variable<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-120-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-120-1"
|
|
class="td11"> <span
|
|
class="cmmi-10">callconv </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-120-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-120-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">ccall</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">stdcall</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">cplusplus</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-120-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>calling convention<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-121-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-121-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-121-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-121-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">jvm</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">dotnet</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-122-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-122-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-122-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-122-3"
|
|
class="td11"> <span
|
|
class="ptmb7t-"> system-specific</span><span
|
|
class="ptmb7t-"> calling</span><span
|
|
class="ptmb7t-"> conventions</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-123-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-123-1"
|
|
class="td11"> <a
|
|
id="dx17-180040"></a><span
|
|
class="cmmi-10">impent </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-123-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-123-3"
|
|
class="td11"> <span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">string</span><span
|
|
class="cmr-10">] </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-123-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>see Section <a
|
|
href="haskellch8.html#x15-1620008.5.1">8.5.1<!--tex4ht:ref: sec:ccall --></a><span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-124-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-124-1"
|
|
class="td11"> <a
|
|
id="dx17-180041"></a><span
|
|
class="cmmi-10">expent </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-124-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-124-3"
|
|
class="td11"> <span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">string</span><span
|
|
class="cmr-10">] </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-124-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>see Section <a
|
|
href="haskellch8.html#x15-1620008.5.1">8.5.1<!--tex4ht:ref: sec:ccall --></a><span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-125-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-125-1"
|
|
class="td11"> <a
|
|
id="dx17-180042"></a><span
|
|
class="cmmi-10">safety </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-125-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-125-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">unsafe</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">safe</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-126-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-126-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-127-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-127-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-128-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-128-1"
|
|
class="td11"> <a
|
|
id="dx17-180043"></a><span
|
|
class="cmmi-10">ftype </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-128-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-128-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">frtype </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-129-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-129-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-129-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-129-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">fatype</span><span
|
|
class="cmmi-10">  </span><span
|
|
class="cmsy-10">→</span> <span
|
|
class="cmmi-10"> ftype </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-130-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-130-1"
|
|
class="td11"> <a
|
|
id="dx17-180044"></a><span
|
|
class="cmmi-10">frtype </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-130-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-130-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">fatype </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-131-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-131-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-131-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-131-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">()</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-132-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-132-1"
|
|
class="td11"> <a
|
|
id="dx17-180045"></a><span
|
|
class="cmmi-10">fatype </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-132-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-132-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qtycon</span><span
|
|
class="cmmi-10"> atype</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> atype</span><sub><span
|
|
class="cmmi-7">k</span></sub> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-132-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">k</span><span
|
|
class="cmmi-10">  </span><span
|
|
class="cmsy-10">≥</span> <span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-133-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-133-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-134-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-134-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-135-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-135-1"
|
|
class="td11"> <a
|
|
id="dx17-180046"></a><span
|
|
class="cmmi-10">funlhs </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-135-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-135-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">var</span><span
|
|
class="cmmi-10"> apat</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10"> apat</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">} </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-136-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-136-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-136-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-136-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">pat</span><span
|
|
class="cmmi-10"> varop</span><span
|
|
class="cmmi-10"> pat</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-137-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-137-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-137-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-137-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> funlhs</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span><span
|
|
class="cmmi-10"> apat</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">{</span><span
|
|
class="cmmi-10"> apat</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">} </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-138-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-138-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-139-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-139-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-140-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-140-1"
|
|
class="td11"> <a
|
|
id="dx17-180047"></a><span
|
|
class="cmmi-10">rhs </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-140-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-140-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">=</span><span
|
|
class="cmmi-10"> exp</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">where</span><span
|
|
class="cmmi-10"> decls</span><span
|
|
class="cmr-10">] </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-141-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-141-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-141-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-141-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">gdrhs</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">where</span><span
|
|
class="cmmi-10"> decls</span><span
|
|
class="cmr-10">] </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-142-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-142-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-143-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-143-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-144-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-144-1"
|
|
class="td11"> <a
|
|
id="dx17-180048"></a><span
|
|
class="cmmi-10">gdrhs </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-144-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-144-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">guards</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">=</span><span
|
|
class="cmmi-10"> exp</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">gdrhs</span><span
|
|
class="cmr-10">]</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-145-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-145-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-146-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-146-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-147-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-147-1"
|
|
class="td11"> <a
|
|
id="dx17-180049"></a><span
|
|
class="cmmi-10">guards</span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-147-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-147-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">|</span><span
|
|
class="cmmi-10"> guard</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10">,</span><span
|
|
class="cmmi-10"> guard</span><sub><span
|
|
class="cmmi-7">n</span></sub> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-147-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">1)</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-148-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-148-1"
|
|
class="td11"> <a
|
|
id="dx17-180050"></a><span
|
|
class="cmmi-10">guard</span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-148-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-148-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">pat</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-"><-</span><span
|
|
class="cmmi-10"> infixexp</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-148-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>pattern guard<span
|
|
class="cmr-10">)</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-149-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-149-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-149-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-149-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">let</span><span
|
|
class="cmmi-10"> decls</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-149-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>local declaration<span
|
|
class="cmr-10">)</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-150-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-150-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-150-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-150-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">infixexp </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-150-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>boolean guard<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-151-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-151-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-152-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-152-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-153-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-153-1"
|
|
class="td11"> <a
|
|
id="dx17-180051"></a><span
|
|
class="cmmi-10">exp </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-153-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-153-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">infixexp</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">::</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">context</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">=></span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> type</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-153-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>expression type signature<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-154-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-154-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-154-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-154-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">infixexp</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-155-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-155-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-156-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-156-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-157-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-157-1"
|
|
class="td11"> <a
|
|
id="dx17-180052"></a><span
|
|
class="cmmi-10">infixexp</span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-157-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-157-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">lexp</span><span
|
|
class="cmmi-10"> qop</span><span
|
|
class="cmmi-10"> infixexp</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-157-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>infix operator application<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-158-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-158-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-158-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-158-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">-</span><span
|
|
class="cmmi-10"> infixexp</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-158-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>prefix negation<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-159-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-159-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-159-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-159-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">lexp</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-160-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-160-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-161-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-161-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-162-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-162-1"
|
|
class="td11"> <a
|
|
id="dx17-180053"></a><span
|
|
class="cmmi-10">lexp</span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-162-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-162-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">\</span><span
|
|
class="cmmi-10"> apat</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> apat</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">-></span><span
|
|
class="cmmi-10"> exp </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-162-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>lambda abstraction<span
|
|
class="cmmi-10">,</span><span
|
|
class="cmmi-10"> n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">1) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-163-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-163-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-163-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-163-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">let</span><span
|
|
class="cmmi-10"> decls</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">in</span><span
|
|
class="cmmi-10"> exp </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-163-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>let expression<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-164-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-164-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-164-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-164-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">if</span><span
|
|
class="cmmi-10"> exp</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">;</span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">then</span><span
|
|
class="cmmi-10"> exp</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">;</span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">else</span><span
|
|
class="cmmi-10"> exp</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-164-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>conditional<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-165-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-165-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-165-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-165-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">case</span><span
|
|
class="cmmi-10"> exp</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">of</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">{</span><span
|
|
class="cmmi-10"> alts</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">}</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-165-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>case expression<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-166-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-166-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-166-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-166-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">do</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">{</span><span
|
|
class="cmmi-10"> stmts</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">}</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-166-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>do expression<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-167-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-167-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-167-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-167-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">fexp </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-168-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-168-1"
|
|
class="td11"> <a
|
|
id="dx17-180054"></a><span
|
|
class="cmmi-10">fexp </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-168-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-168-3"
|
|
class="td11"> <span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">fexp</span><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> aexp </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-168-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>function application<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-169-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-169-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-170-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-170-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-171-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-171-1"
|
|
class="td11"> <a
|
|
id="dx17-180055"></a><span
|
|
class="cmmi-10">aexp </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-171-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-171-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qvar </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-171-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>variable<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-172-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-172-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-172-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-172-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">gcon </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-172-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>general constructor<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-173-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-173-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-173-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-173-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">literal </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-174-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-174-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-174-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-174-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> exp</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-174-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>parenthesized expression<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-175-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-175-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-175-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-175-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> exp</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> exp</span><sub><span
|
|
class="cmmi-7">k</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-175-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>tuple<span
|
|
class="cmmi-10">,</span><span
|
|
class="cmmi-10"> k </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">2) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-176-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-176-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-176-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-176-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">[</span><span
|
|
class="cmmi-10"> exp</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> exp</span><sub><span
|
|
class="cmmi-7">k</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">]</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-176-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>list<span
|
|
class="cmmi-10">,</span><span
|
|
class="cmmi-10"> k </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">1) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-177-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-177-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-177-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-177-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">[</span><span
|
|
class="cmmi-10"> exp</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> exp</span><sub><span
|
|
class="cmr-7">2</span></sub><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">..</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10">exp</span><sub><span
|
|
class="cmr-7">3</span></sub><span
|
|
class="cmr-10">]</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">]</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-177-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>arithmetic sequence<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-178-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-178-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-178-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-178-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">[</span><span
|
|
class="cmmi-10"> exp</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">|</span><span
|
|
class="cmmi-10"> qual</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> qual</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">]</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-178-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>list comprehension<span
|
|
class="cmmi-10">,</span><span
|
|
class="cmmi-10"> n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">1) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-179-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-179-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-179-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-179-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">infixexp</span><span
|
|
class="cmmi-10"> qop</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-179-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>left section<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-180-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-180-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-180-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-180-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">qop</span><sub><span
|
|
class="cmsy-7">⟨</span><span
|
|
class="pcrr7t-">-</span><span
|
|
class="cmsy-7">⟩</span></sub><span
|
|
class="cmmi-10"> infixexp</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-180-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>right section<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-181-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-181-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-181-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-181-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qcon</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">{</span><span
|
|
class="cmmi-10"> fbind</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> fbind</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">}</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-181-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>labeled construction<span
|
|
class="cmmi-10">,</span><span
|
|
class="cmmi-10"> n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-182-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-182-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-182-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-182-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">aexp</span><sub><span
|
|
class="cmsy-7">⟨</span><span
|
|
class="cmmi-7">qcon</span><span
|
|
class="cmsy-7">⟩</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">{</span><span
|
|
class="cmmi-10"> fbind</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> fbind</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">}</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-182-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>labeled update<span
|
|
class="cmmi-10">,</span><span
|
|
class="cmmi-10"> n</span><span
|
|
class="cmmi-10">  </span><span
|
|
class="cmsy-10">≥</span> <span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">1) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-183-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-183-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-184-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-184-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-185-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-185-1"
|
|
class="td11"> <a
|
|
id="dx17-180056"></a><span
|
|
class="cmmi-10">qual </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-185-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-185-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">pat</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-"><-</span><span
|
|
class="cmmi-10"> exp </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-185-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>generator<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-186-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-186-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-186-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-186-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">let</span><span
|
|
class="cmmi-10"> decls </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-186-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>local declaration<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-187-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-187-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-187-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-187-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">exp </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-187-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>guard<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-188-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-188-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-189-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-189-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-190-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-190-1"
|
|
class="td11"> <a
|
|
id="dx17-180057"></a><span
|
|
class="cmmi-10">alts </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-190-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-190-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">alt</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">;</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">;</span><span
|
|
class="cmmi-10"> alt</span><sub><span
|
|
class="cmmi-7">n</span></sub> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-190-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">1) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-191-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-191-1"
|
|
class="td11"> <a
|
|
id="dx17-180058"></a><span
|
|
class="cmmi-10">alt </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-191-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-191-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">pat</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">-></span><span
|
|
class="cmmi-10"> exp</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">where</span><span
|
|
class="cmmi-10"> decls</span><span
|
|
class="cmr-10">] </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-192-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-192-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-192-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-192-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">pat</span><span
|
|
class="cmmi-10"> gdpat</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">where</span><span
|
|
class="cmmi-10"> decls</span><span
|
|
class="cmr-10">] </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-193-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-193-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-193-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-193-3"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-193-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">empty</span><span
|
|
class="cmmi-10"> alternative</span><span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-194-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-194-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-195-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-195-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-196-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-196-1"
|
|
class="td11"> <a
|
|
id="dx17-180059"></a><span
|
|
class="cmmi-10">gdpat </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-196-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-196-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">guards</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">-></span><span
|
|
class="cmmi-10"> exp</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10"> gdpat</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">]</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-197-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-197-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-198-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-198-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-199-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-199-1"
|
|
class="td11"> <a
|
|
id="dx17-180060"></a><span
|
|
class="cmmi-10">stmts </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-199-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-199-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">stmt</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> stmt</span><sub><span
|
|
class="cmmi-7">n</span></sub><span
|
|
class="cmmi-10"> exp</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="pcrr7t-">;</span><span
|
|
class="cmr-10">] </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-199-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">n </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-200-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-200-1"
|
|
class="td11"> <a
|
|
id="dx17-180061"></a><span
|
|
class="cmmi-10">stmt </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-200-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-200-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">exp</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">;</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-201-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-201-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-201-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-201-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">pat</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-"><-</span><span
|
|
class="cmmi-10"> exp</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">;</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-202-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-202-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-202-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-202-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">let</span><span
|
|
class="cmmi-10"> decls</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">;</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-203-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-203-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-203-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-203-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">;</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-203-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">empty</span><span
|
|
class="cmmi-10"> statement</span><span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-204-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-204-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-205-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-205-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-206-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-206-1"
|
|
class="td11"> <a
|
|
id="dx17-180062"></a><span
|
|
class="cmmi-10">fbind </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-206-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-206-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qvar</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">=</span><span
|
|
class="cmmi-10"> exp </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-207-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-207-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-208-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-208-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-209-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-209-1"
|
|
class="td11"> <a
|
|
id="dx17-180063"></a><span
|
|
class="cmmi-10">pat </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-209-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-209-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">lpat</span><span
|
|
class="cmmi-10"> qconop</span><span
|
|
class="cmmi-10"> pat</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-209-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>infix constructor<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-210-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-210-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-210-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-210-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">lpat</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-211-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-211-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-212-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-212-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-213-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-213-1"
|
|
class="td11"> <a
|
|
id="dx17-180064"></a><span
|
|
class="cmmi-10">lpat</span> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-213-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-213-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">apat </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-214-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-214-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-214-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-214-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">-</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">(</span><span
|
|
class="cmmi-10">integer</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> float</span><span
|
|
class="cmr-10">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-214-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>negative literal<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-215-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-215-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-215-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-215-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">gcon</span><span
|
|
class="cmmi-10"> apat</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> apat</span><sub><span
|
|
class="cmmi-7">k</span></sub> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-215-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>arity<span
|
|
class="cmmi-10"> gcon</span><span
|
|
class="cmmi-10">  </span><span
|
|
class="cmr-10">=</span> <span
|
|
class="cmmi-10"> k,</span><span
|
|
class="cmmi-10"> k </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">1) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-216-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-216-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-217-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-217-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-218-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-218-1"
|
|
class="td11"> <a
|
|
id="dx17-180065"></a><span
|
|
class="cmmi-10">apat </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-218-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-218-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">var</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">[</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">@</span><span
|
|
class="cmmi-10"> apat</span><span
|
|
class="cmr-10">] </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-218-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>as pattern<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-219-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-219-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-219-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-219-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">gcon </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-219-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>arity<span
|
|
class="cmmi-10"> gcon</span><span
|
|
class="cmmi-10">  </span><span
|
|
class="cmr-10">=</span> <span
|
|
class="cmmi-10"> </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-220-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-220-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-220-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-220-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qcon</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">{</span><span
|
|
class="cmmi-10"> fpat</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> fpat</span><sub><span
|
|
class="cmmi-7">k</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">}</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-220-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>labeled pattern<span
|
|
class="cmmi-10">,</span><span
|
|
class="cmmi-10"> k </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">0) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-221-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-221-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-221-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-221-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">literal </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-222-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-222-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-222-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-222-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">_</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-222-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>wildcard<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-223-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-223-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-223-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-223-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> pat</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-223-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>parenthesized pattern<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-224-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-224-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-224-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-224-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> pat</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> pat</span><sub><span
|
|
class="cmmi-7">k</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-224-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>tuple pattern<span
|
|
class="cmmi-10">,</span><span
|
|
class="cmmi-10"> k </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">2) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-225-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-225-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-225-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-225-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">[</span><span
|
|
class="cmmi-10"> pat</span><sub><span
|
|
class="cmr-7">1</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmmi-10">…</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmmi-10"> pat</span><sub><span
|
|
class="cmmi-7">k</span></sub><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">]</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-225-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>list pattern<span
|
|
class="cmmi-10">,</span><span
|
|
class="cmmi-10"> k </span><span
|
|
class="cmsy-10">≥ </span><span
|
|
class="cmr-10">1) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-226-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-226-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-226-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-226-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">~</span><span
|
|
class="cmmi-10"> apat </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-226-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>irrefutable pattern<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-227-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-227-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-228-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-228-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-229-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-229-1"
|
|
class="td11"> <a
|
|
id="dx17-180066"></a><span
|
|
class="cmmi-10">fpat </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-229-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-229-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qvar</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">=</span><span
|
|
class="cmmi-10"> pat </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-230-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-230-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-231-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-231-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-232-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-232-1"
|
|
class="td11"> <a
|
|
id="dx17-180067"></a><span
|
|
class="cmmi-10">gcon </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-232-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-232-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">()</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-233-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-233-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-233-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-233-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">[]</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-234-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-234-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-234-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-234-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">(,</span><span
|
|
class="cmsy-10">{</span><span
|
|
class="pcrr7t-">,</span><span
|
|
class="cmsy-10">}</span><span
|
|
class="pcrr7t-">)</span> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-235-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-235-1"
|
|
class="td11"> </td><td style="white-space:nowrap; text-align:center;" id="TBL-105-235-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">|</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-235-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qcon </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-236-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-236-1"
|
|
class="td11"> <span
|
|
class="ptmri7t-">  </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-237-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-237-1"
|
|
class="td11"> </td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-238-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-238-1"
|
|
class="td11"> <a
|
|
id="dx17-180068"></a><span
|
|
class="cmmi-10">var </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-238-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-238-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">varid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> varsym</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-238-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>variable<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-239-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-239-1"
|
|
class="td11"> <a
|
|
id="dx17-180069"></a><span
|
|
class="cmmi-10">qvar </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-239-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-239-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qvarid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> qvarsym</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-239-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>qualified variable<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-240-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-240-1"
|
|
class="td11"> <a
|
|
id="dx17-180070"></a><span
|
|
class="cmmi-10">con </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-240-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-240-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">conid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> consym</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-240-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>constructor<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-241-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-241-1"
|
|
class="td11"> <a
|
|
id="dx17-180071"></a><span
|
|
class="cmmi-10">qcon </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-241-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-241-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qconid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">(</span><span
|
|
class="cmmi-10"> gconsym</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">)</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-241-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>qualified constructor<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-242-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-242-1"
|
|
class="td11"> <a
|
|
id="dx17-180072"></a><span
|
|
class="cmmi-10">varop </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-242-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-242-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">varsym</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">`</span> <span
|
|
class="cmmi-10"> varid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">`</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-242-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>variable operator<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-243-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-243-1"
|
|
class="td11"> <a
|
|
id="dx17-180073"></a><span
|
|
class="cmmi-10">qvarop </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-243-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-243-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qvarsym</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">`</span> <span
|
|
class="cmmi-10"> qvarid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">`</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-243-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>qualified variable operator<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-244-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-244-1"
|
|
class="td11"> <a
|
|
id="dx17-180074"></a><span
|
|
class="cmmi-10">conop </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-244-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-244-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">consym</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">`</span> <span
|
|
class="cmmi-10"> conid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">`</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-244-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>constructor operator<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-245-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-245-1"
|
|
class="td11"> <a
|
|
id="dx17-180075"></a><span
|
|
class="cmmi-10">qconop </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-245-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-245-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">gconsym</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">`</span> <span
|
|
class="cmmi-10"> qconid</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="pcrr7t-">`</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-245-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>qualified constructor operator<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-246-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-246-1"
|
|
class="td11"> <a
|
|
id="dx17-180076"></a><span
|
|
class="cmmi-10">op </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-246-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-246-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">varop</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> conop </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-246-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>operator<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-247-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-247-1"
|
|
class="td11"> <a
|
|
id="dx17-180077"></a><span
|
|
class="cmmi-10">qop </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-247-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-247-3"
|
|
class="td11"> <span
|
|
class="cmmi-10">qvarop</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> qconop </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-105-247-4"
|
|
class="td11"> <span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="ptmri7t-"> </span><span
|
|
class="cmr-10">(</span>qualified operator<span
|
|
class="cmr-10">) </span></td>
|
|
</tr><tr
|
|
style="vertical-align:baseline;" id="TBL-105-248-"><td style="white-space:nowrap; text-align:left;" id="TBL-105-248-1"
|
|
class="td11"> <a
|
|
id="dx17-180078"></a><span
|
|
class="cmmi-10">gconsym </span></td><td style="white-space:nowrap; text-align:center;" id="TBL-105-248-2"
|
|
class="td11"> <span
|
|
class="cmsy-10">→</span> </td><td style="white-space:nowrap; text-align:left;" id="TBL-105-248-3"
|
|
class="td11"> <span
|
|
class="pcrr7t-">:</span><span
|
|
class="cmmi-10"> </span><span
|
|
class="cmsy-10">|</span><span
|
|
class="cmmi-10"> qconsym </span></td>
|
|
</tr></table>
|
|
|
|
|
|
</div></div>
|
|
|
|
|
|
|
|
<h3 class="sectionHead"><span class="titlemark">10.6 </span> <a
|
|
id="x17-18100010.6"></a>Fixity Resolution</h3>
|
|
<a
|
|
id="dx17-181001"></a>
|
|
<p class="noindent"> The following is an example implementation of fixity resolution for Haskell expressions. Fixity resolution also
|
|
applies to Haskell patterns, but patterns are a subset of expressions so in what follows we consider only expressions
|
|
for simplicity.
|
|
<p class="noindent"> The function <span
|
|
class="pcrr7t-">resolve</span> takes a list in which the elements are expressions or operators, i.e. an instance of the
|
|
<span
|
|
class="cmmi-10">infixexp</span> non-terminal in the context-free grammar. It returns either <span
|
|
class="pcrr7t-">Just</span><span
|
|
class="pcrr7t-"> e</span> where <span
|
|
class="pcrr7t-">e</span> is the resolved expression, or
|
|
<span
|
|
class="pcrr7t-">Nothing</span> if the input does not represent a valid expression. In a compiler, of course, it would be better to return more
|
|
information about the operators involved for the purposes of producing a useful error message, but the <span
|
|
class="pcrr7t-">Maybe</span> type
|
|
will suffice to illustrate the algorithm here.
|
|
<p class="noindent">
|
|
<div class="quote">
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-348">
|
|
import Control.Monad
|
|
 <br />
|
|
 <br />type Prec   = Int
|
|
 <br />type Var    = String
|
|
 <br />
|
|
 <br />data Op = Op String Prec Fixity
|
|
 <br />  deriving (Eq,Show)
|
|
 <br />
|
|
 <br />data Fixity = Leftfix | Rightfix | Nonfix
|
|
 <br />  deriving (Eq,Show)
|
|
 <br />
|
|
 <br />data Exp = Var Var | OpApp Exp Op Exp | Neg Exp
|
|
 <br />  deriving (Eq,Show)
|
|
 <br />
|
|
 <br />data Tok = TExp Exp | TOp Op | TNeg
|
|
 <br />  deriving (Eq,Show)
|
|
 <br />
|
|
 <br />resolve :: [Tok] -> Maybe Exp
|
|
 <br />resolve tokens = fmap fst $ parseNeg (Op "" (-1) Nonfix) tokens
|
|
 <br />  where
|
|
 <br />    parseNeg :: Op -> [Tok] -> Maybe (Exp,[Tok])
|
|
 <br />    parseNeg op1 (TExp e1 : rest)
|
|
 <br />       = parse op1 e1 rest
|
|
 <br />    parseNeg op1 (TNeg : rest)
|
|
 <br />       = do guard (prec1 < 6)
|
|
 <br />            (r, rest') <- parseNeg (Op "-" 6 Leftfix) rest
|
|
 <br />            parse op1 (Neg r) rest'
|
|
 <br />       where
|
|
 <br />          Op _ prec1 fix1 = op1
|
|
 <br />
|
|
 <br />    parse :: Op -> Exp -> [Tok] -> Maybe (Exp, [Tok])
|
|
 <br />    parse _   e1 [] = Just (e1, [])
|
|
 <br />    parse op1 e1 (TOp op2 : rest)
|
|
 <br />       -- case (1): check for illegal expressions
|
|
 <br />       | prec1 == prec2 && (fix1 /= fix2 || fix1 == Nonfix)
|
|
 <br />       = Nothing
|
|
 <br />
|
|
 <br />       -- case (2): op1 and op2 should associate to the left
|
|
 <br />       | prec1 > prec2 || (prec1 == prec2 && fix1 == Leftfix)
|
|
 <br />       = Just (e1, TOp op2 : rest)
|
|
 <br />
|
|
 <br />       -- case (3): op1 and op2 should associate to the right
|
|
 <br />       | otherwise
|
|
 <br />       = do (r,rest') <- parseNeg op2 rest
|
|
 <br />            parse op1 (OpApp e1 op2 r) rest'
|
|
 <br />       where
|
|
 <br />         Op _ prec1 fix1 = op1
|
|
|
|
|
|
|
|
 <br />         Op _ prec2 fix2 = op2
|
|
</div>
|
|
<p class="noindent"></div>
|
|
<p class="noindent"> The algorithm works as follows. At each stage we have a call
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-349">
|
|
      parse op1 E1 (op2 : tokens)
|
|
</div>
|
|
<p class="noindent">
|
|
<p class="noindent"> which means that we are looking at an expression like
|
|
|
|
|
|
|
|
<div class="verbatim" id="verbatim-350">
|
|
      E0 ‘op1‘ E1 ‘op2‘ ...     (1)
|
|
</div>
|
|
<p class="noindent">
|
|
<p class="noindent"> (the caller holds E0). The job of <span
|
|
class="pcrr7t-">parse</span> is to build the expression to the right of <span
|
|
class="pcrr7t-">op1</span>, returning the expression and
|
|
any remaining input.
|
|
<p class="noindent"> There are three cases to consider:
|
|
<p class="noindent">
|
|
<ol class="enumerate1" >
|
|
<li
|
|
class="enumerate" id="x17-181003x1">if <span
|
|
class="pcrr7t-">op1</span> and <span
|
|
class="pcrr7t-">op2</span> have the same precedence, but they do not have the same associativity, or they are
|
|
declared to be nonfix, then the expression is illegal.
|
|
</li>
|
|
<li
|
|
class="enumerate" id="x17-181005x2">If <span
|
|
class="pcrr7t-">op1</span> has a higher precedence than <span
|
|
class="pcrr7t-">op2</span>, or <span
|
|
class="pcrr7t-">op1</span> and <span
|
|
class="pcrr7t-">op2</span> should left-associate, then we know that
|
|
the expression to the right of <span
|
|
class="pcrr7t-">op1</span> is <span
|
|
class="pcrr7t-">E1</span>, so we return this to the caller.
|
|
</li>
|
|
<li
|
|
class="enumerate" id="x17-181007x3">Otherwise, we know we want to build an expression of the form <span
|
|
class="pcrr7t-">E1</span><span
|
|
class="pcrr7t-"> ‘op2‘</span><span
|
|
class="pcrr7t-"> R</span>. To find <span
|
|
class="pcrr7t-">R</span>, we call
|
|
<span
|
|
class="pcrr7t-">parseNeg</span><span
|
|
class="pcrr7t-"> op2</span><span
|
|
class="pcrr7t-"> tokens</span> to compute the expression to the right of <span
|
|
class="pcrr7t-">op2</span>, namely <span
|
|
class="pcrr7t-">R</span> (more about
|
|
<span
|
|
class="pcrr7t-">parseNeg</span> below, but essentially if <span
|
|
class="pcrr7t-">tokens</span> is of the form <span
|
|
class="pcrr7t-">(E2</span><span
|
|
class="pcrr7t-"> :</span><span
|
|
class="pcrr7t-"> rest)</span>, then this is equivalent to
|
|
<span
|
|
class="pcrr7t-">parse</span><span
|
|
class="pcrr7t-"> op2</span><span
|
|
class="pcrr7t-"> E2</span><span
|
|
class="pcrr7t-"> rest</span>). Now, we have
|
|
<span
|
|
class="pcrr7t-">E0</span><span
|
|
class="pcrr7t-"> ‘op1‘</span><span
|
|
class="pcrr7t-"> (E1</span><span
|
|
class="pcrr7t-"> ‘op2‘</span><span
|
|
class="pcrr7t-"> R)</span><span
|
|
class="pcrr7t-"> ‘op3‘</span><span
|
|
class="pcrr7t-"> ...</span>
|
|
where <span
|
|
class="pcrr7t-">op3</span> is the next operator in the input. This is an instance of (1) above, so to continue we call
|
|
parse, with the new <span
|
|
class="pcrr7t-">E1</span><span
|
|
class="pcrr7t-"> ==</span><span
|
|
class="pcrr7t-"> (E1</span><span
|
|
class="pcrr7t-"> ‘op2‘</span><span
|
|
class="pcrr7t-"> R)</span>.</li></ol>
|
|
<p class="noindent"> To initialise the algorithm, we set <span
|
|
class="pcrr7t-">op1</span> to be an imaginary operator with precedence lower than anything else. Hence
|
|
<span
|
|
class="pcrr7t-">parse</span> will consume the whole input, and return the resulting expression.
|
|
<p class="noindent"> The handling of the prefix negation operator, <span
|
|
class="pcrr7t-">-</span>, complicates matters only slightly. Recall that prefix negation has the
|
|
same fixity as infix negation: left-associative with precedence 6. The operator to the left of <span
|
|
class="pcrr7t-">-</span>, if there is one, must
|
|
have precedence lower than 6 for the expression to be legal. The negation operator itself may left-associate with
|
|
operators of the same fixity (e.g. <span
|
|
class="pcrr7t-">+</span>). So for example <span
|
|
class="pcrr7t-">-a</span><span
|
|
class="pcrr7t-"> +</span><span
|
|
class="pcrr7t-"> b</span> is legal and resolves as <span
|
|
class="pcrr7t-">(-a)</span><span
|
|
class="pcrr7t-"> +</span><span
|
|
class="pcrr7t-"> b</span>, but <span
|
|
class="pcrr7t-">a</span><span
|
|
class="pcrr7t-"> +</span><span
|
|
class="pcrr7t-"> -b</span> is
|
|
illegal.
|
|
|
|
|
|
|
|
<p class="noindent"> The function <span
|
|
class="pcrr7t-">parseNeg</span> handles prefix negation. If we encounter a negation operator, and it is legal in this position
|
|
(the operator to the left has precedence lower than 6), then we proceed in a similar way to case (3)
|
|
above: compute the argument to <span
|
|
class="pcrr7t-">-</span> by recursively calling <span
|
|
class="pcrr7t-">parseNeg</span>, and then continue by calling
|
|
<span
|
|
class="pcrr7t-">parse</span>.
|
|
<p class="noindent"> Note that this algorithm is insensitive to the range and resolution of precedences. There is no reason in principle that
|
|
Haskell should be limited to integral precedences in the range 1 to 10; a larger range, or fractional values, would
|
|
present no additional difficulties.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!--l. 13--><div class="crosslinks"><p class="noindent">[<a
|
|
href="haskellch11.html" >next</a>] [<a
|
|
href="haskellch9.html" >prev</a>] [<a
|
|
href="haskellch9.html#tailhaskellch9.html" >prev-tail</a>] [<a
|
|
href="haskellch10.html" >front</a>] [<a
|
|
href="haskellpa1.html#haskellch10.html" >up</a>] </p></div>
|
|
<p class="noindent"> <a
|
|
id="tailhaskellch10.html"></a>
|
|
</body></html>
|