Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 4e6d7c8ed19900cd06e1799a07228807 > files > 22

ocaml-pa-monad-6.0-1mdv2010.0.i586.rpm

<html><head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
<link rel="Start" href="pa_monad.html">
<link title="Index of types" rel=Appendix href="pa_monad_types.html">
<link title="Index of exceptions" rel=Appendix href="pa_monad_exceptions.html">
<link title="Index of values" rel=Appendix href="pa_monad_values.html">
<link title="Index of modules" rel=Appendix href="pa_monad_modules.html">
<link title="Pa_monad" rel="Chapter" href="Pa_monad.html">
<link title="Cc" rel="Chapter" href="Cc.html">
<link title="Exception" rel="Chapter" href="Exception.html">
<link title="Io" rel="Chapter" href="Io.html">
<link title="Utest" rel="Chapter" href="Utest.html"><title>Pa_monad.patt_to_recbinding</title>
</head>
<body>
<code class="code"><span class="keyword">let</span>&nbsp;<span class="keyword">rec</span>&nbsp;patt_to_exp&nbsp;(_loc:&nbsp;<span class="constructor">Ast</span>.<span class="constructor">Loc</span>.t)&nbsp;(a_pattern:&nbsp;<span class="constructor">Ast</span>.patt):&nbsp;<span class="constructor">Ast</span>.expr&nbsp;=<br>
&nbsp;&nbsp;<span class="keyword">match</span>&nbsp;a_pattern&nbsp;<span class="keyword">with</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;:patt&lt;&nbsp;$int:s$&nbsp;&gt;&gt;&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;&lt;:expr&lt;&nbsp;$int:s$&nbsp;&gt;&gt;&nbsp;<span class="comment">(*&nbsp;integer&nbsp;constant&nbsp;*)</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;&lt;:patt&lt;&nbsp;$chr:c$&nbsp;&gt;&gt;&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;&lt;:expr&lt;&nbsp;$chr:c$&nbsp;&gt;&gt;&nbsp;<span class="comment">(*&nbsp;character&nbsp;constant&nbsp;*)</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;&lt;:patt&lt;&nbsp;$str:s$&nbsp;&gt;&gt;&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;&lt;:expr&lt;&nbsp;$str:s$&nbsp;&gt;&gt;&nbsp;<span class="comment">(*&nbsp;string&nbsp;constant&nbsp;*)</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;&lt;:patt&lt;&nbsp;$lid:b$&nbsp;&gt;&gt;&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;&lt;:expr&lt;&nbsp;$lid:b$&nbsp;&gt;&gt;&nbsp;<span class="comment">(*&nbsp;local&nbsp;variable&nbsp;*)</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;&lt;:patt&lt;&nbsp;$uid:b$&nbsp;&gt;&gt;&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;&lt;:expr&lt;&nbsp;$uid:b$&nbsp;&gt;&gt;&nbsp;<span class="comment">(*&nbsp;variable&nbsp;of&nbsp;other&nbsp;module&nbsp;*)</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;&lt;:patt&lt;&nbsp;$e1$&nbsp;$e2$&nbsp;&gt;&gt;&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">(*&nbsp;function&nbsp;application&nbsp;*)</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">let</span>&nbsp;p1&nbsp;=&nbsp;patt_to_exp&nbsp;_loc&nbsp;e1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">and</span>&nbsp;p2&nbsp;=&nbsp;patt_to_exp&nbsp;_loc&nbsp;e2&nbsp;<span class="keyword">in</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;:expr&lt;&nbsp;$p1$&nbsp;$p2$&nbsp;&gt;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;&lt;:patt&lt;&nbsp;($tup:p$)&nbsp;&gt;&gt;&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">(*&nbsp;tuple&nbsp;*)</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">let</span>&nbsp;e&nbsp;=&nbsp;patt_to_exp&nbsp;_loc&nbsp;p&nbsp;<span class="keyword">in</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;:expr&lt;&nbsp;($tup:e$)&nbsp;&gt;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;&lt;:patt&lt;&nbsp;$p1$,&nbsp;$p2$&nbsp;&gt;&gt;&nbsp;<span class="keywordsign">-&gt;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">let</span>&nbsp;e1&nbsp;=&nbsp;patt_to_exp&nbsp;_loc&nbsp;p1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">and</span>&nbsp;e2&nbsp;=&nbsp;patt_to_exp&nbsp;_loc&nbsp;p2&nbsp;<span class="keyword">in</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;:expr&lt;&nbsp;$e1$,&nbsp;$e2$&nbsp;&gt;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;&lt;:patt&lt;&nbsp;{&nbsp;$r$&nbsp;}&nbsp;&gt;&gt;&nbsp;<span class="keywordsign">-&gt;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;:expr&lt;&nbsp;{&nbsp;$rec_binding:patt_to_recbinding&nbsp;_loc&nbsp;r$&nbsp;}&nbsp;&gt;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;&lt;:patt&lt;&nbsp;($e$&nbsp;:&nbsp;$t$)&nbsp;&gt;&gt;&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">(*&nbsp;type&nbsp;restriction&nbsp;*)</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">let</span>&nbsp;p&nbsp;=&nbsp;patt_to_exp&nbsp;_loc&nbsp;e&nbsp;<span class="keyword">in</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;:expr&lt;&nbsp;($p$&nbsp;:&nbsp;$t$)&nbsp;&gt;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;_&nbsp;<span class="keywordsign">-&gt;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="constructor">Loc</span>.raise&nbsp;_loc<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<span class="constructor">Stream</span>.<span class="constructor">Error</span>&nbsp;<span class="string">"patt_to_exp:&nbsp;this&nbsp;pattern&nbsp;is&nbsp;not&nbsp;yet&nbsp;supported"</span>)<br>
</code><table><tr><td></td><td><span class="comment">(** <code class="code">patt_to_recbinding _loc a_pattern</code>
<p>

    Convert <code class="code">a_pattern</code> to a recursive binding. *)</span></td></tr></table><code class="code"><br>
<span class="keyword">and</span>&nbsp;patt_to_recbinding&nbsp;(_loc:&nbsp;<span class="constructor">Ast</span>.<span class="constructor">Loc</span>.t)&nbsp;(a_pattern:&nbsp;<span class="constructor">Ast</span>.patt):&nbsp;<span class="constructor">Ast</span>.rec_binding&nbsp;=<br>
&nbsp;&nbsp;<span class="keyword">match</span>&nbsp;a_pattern&nbsp;<span class="keyword">with</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;:patt&lt;&nbsp;&gt;&gt;&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;&lt;:rec_binding&lt;&nbsp;&gt;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;&lt;:patt&lt;&nbsp;$i$&nbsp;=&nbsp;$p$&nbsp;&gt;&gt;&nbsp;<span class="keywordsign">-&gt;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">let</span>&nbsp;p&nbsp;=&nbsp;patt_to_exp&nbsp;_loc&nbsp;p&nbsp;<span class="keyword">in</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;:rec_binding&lt;&nbsp;$i$&nbsp;=&nbsp;$p$&nbsp;&gt;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;&lt;:patt&lt;&nbsp;$p1$&nbsp;;&nbsp;$p2$&nbsp;&gt;&gt;&nbsp;<span class="keywordsign">-&gt;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">let</span>&nbsp;b1&nbsp;=&nbsp;patt_to_recbinding&nbsp;_loc&nbsp;p1<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">and</span>&nbsp;b2&nbsp;=&nbsp;patt_to_recbinding&nbsp;_loc&nbsp;p2&nbsp;<span class="keyword">in</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;:rec_binding&lt;&nbsp;$b1$;&nbsp;$b2$&nbsp;&gt;&gt;<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;&lt;:patt&lt;&nbsp;$anti:_$&nbsp;&gt;&gt;&nbsp;<span class="keywordsign">-&gt;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="constructor">Loc</span>.raise&nbsp;_loc<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<span class="constructor">Stream</span>.<span class="constructor">Error</span>&nbsp;<span class="string">"patt_to_recbinding:&nbsp;antiquotation&nbsp;are&nbsp;not&nbsp;yet&nbsp;supported"</span>)<br>
&nbsp;&nbsp;&nbsp;&nbsp;<span class="keywordsign">|</span>&nbsp;_&nbsp;<span class="keywordsign">-&gt;</span><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="constructor">Loc</span>.raise&nbsp;_loc<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<span class="constructor">Stream</span>.<span class="constructor">Error</span>&nbsp;<span class="string">"patt_to_recbinding:&nbsp;never&nbsp;reached"</span>)</code></body></html>