Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > bd5c3d824c3db63ffd9226c15941e6ad > files > 156

mozart-1.4.0-1mdv2010.0.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>3.2 Variable Status</TITLE><LINK href="ozdoc.css" rel="stylesheet" type="text/css"></HEAD><BODY><TABLE align="center" border="0" cellpadding="6" cellspacing="6" class="nav"><TR bgcolor="#DDDDDD"><TD><A href="node3.html#section.values.general">&lt;&lt; Prev</A></TD><TD><A href="value.html">- Up -</A></TD><TD><A href="node5.html#section.values.comparison">Next &gt;&gt;</A></TD></TR></TABLE><DIV id="section.values.status"><H2><A name="section.values.status">3.2 Variable Status</A></H2><P> The following procedures allow to inspect a variable's status. </P><DL><DT><A name="label25"></A><SPAN class="index"><CODE>IsFree</CODE></SPAN> <A name="label26"></A> </DT><DD><BLOCKQUOTE class="synopsis"><P><CODE>{Value<SPAN class="keyword">.</SPAN>isFree&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;</CODE><CODE>?<I>B</I></CODE><CODE>}</CODE> </P></BLOCKQUOTE></DD><DD><P>tests whether <CODE><I>X</I></CODE> is currently free. </P></DD><DT><A name="label27"></A><SPAN class="index"><CODE>IsDet</CODE></SPAN> <A name="label28"></A> </DT><DD><BLOCKQUOTE class="synopsis"><P><CODE>{Value<SPAN class="keyword">.</SPAN>isDet&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;</CODE><CODE>?<I>B</I></CODE><CODE>}</CODE> </P></BLOCKQUOTE></DD><DD><P>tests whether <CODE><I>X</I></CODE> is determined. </P></DD><DT><A name="label29"></A><SPAN class="index"><CODE>IsFuture</CODE></SPAN> <A name="label30"></A> </DT><DD><BLOCKQUOTE class="synopsis"><P><CODE>{Value<SPAN class="keyword">.</SPAN>isFuture&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;</CODE><CODE>?<I>B</I></CODE><CODE>}</CODE> </P></BLOCKQUOTE></DD><DD><P>tests whether <CODE><I>X</I></CODE> is a future. </P></DD><DT><A name="label31"></A><SPAN class="index"><CODE>IsFailed</CODE></SPAN> <A name="label32"></A> </DT><DD><BLOCKQUOTE class="synopsis"><P><CODE>{Value<SPAN class="keyword">.</SPAN>isFailed&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;</CODE><CODE>?<I>B</I></CODE><CODE>}</CODE> </P></BLOCKQUOTE></DD><DD><P>tests whether <CODE><I>X</I></CODE> is a failed value. </P></DD><DT><A name="label33"></A><SPAN class="index"><CODE>IsKinded</CODE></SPAN> <A name="label34"></A> </DT><DD><BLOCKQUOTE class="synopsis"><P><CODE>{Value<SPAN class="keyword">.</SPAN>isKinded&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;</CODE><CODE>?<I>B</I></CODE><CODE>}</CODE> </P></BLOCKQUOTE></DD><DD><P>tests whether <CODE><I>X</I></CODE> is currently kinded, i.&nbsp;e., is constrained but not yet determined. For example, <CODE>foo(a:12&nbsp;<SPAN class="keyword">...</SPAN>)</CODE> is kinded because it is constrained to be a record, yet its arity is not yet known. Also, a non-determined finite domain variable is kinded: its type is known to be integer, but its value is not yet determined. Similarly for finite set variables. </P></DD><DT><CODE>status</CODE> <A name="label36"></A> </DT><DD><BLOCKQUOTE class="synopsis"><P><CODE>{Value<SPAN class="keyword">.</SPAN>status&nbsp;</CODE><CODE><I>X</I></CODE><CODE>&nbsp;</CODE><CODE>?<I>T</I></CODE><CODE>}</CODE> </P></BLOCKQUOTE></DD><DD><P>returns status and type information on&nbsp;<CODE><I>X</I></CODE>. If <CODE><I>X</I></CODE> is free, the atom <CODE>free</CODE> is returned. If <CODE><I>X</I></CODE> is a future, the atom <CODE>future</CODE> is returned. If <CODE><I>X</I></CODE> is a failed value, the atom <CODE>failed</CODE> is returned. If <CODE><I>X</I></CODE> is kinded, the tuple <CODE>kinded(</CODE><I>Y</I><CODE>)</CODE> is returned, where <I>Y</I> is bound to either the atoms <CODE>int</CODE>, <CODE>fset</CODE> or <CODE>record</CODE>, depending on the type of&nbsp;<CODE><I>X</I></CODE>. If <CODE><I>X</I></CODE> is determined, the tuple <CODE>det(</CODE><I>Y</I><CODE>)</CODE> is returned, where <I>Y</I> is bound to the atom as returned by <CODE>{Value<SPAN class="keyword">.</SPAN>type&nbsp;</CODE><CODE><I>X</I></CODE><CODE>}</CODE>. </P></DD><DT><CODE>type</CODE> <A name="label38"></A> </DT><DD><BLOCKQUOTE class="synopsis"><P><CODE>{Value<SPAN class="keyword">.</SPAN>type&nbsp;</CODE><CODE>+<I>X</I></CODE><CODE>&nbsp;</CODE><CODE>?<I>A</I></CODE><CODE>}</CODE> </P></BLOCKQUOTE></DD><DD><P>returns an atom describing the type of&nbsp;<CODE><I>X</I></CODE>. If <CODE><I>X</I></CODE> is of one of the standard primary types depicted in <A href="node2.html#figure.types">Figure&nbsp;2.1</A> (except ``value''), then <CODE><I>A</I></CODE> is constrained to the most specific of <CODE>int</CODE>, <CODE>float</CODE>, <CODE>record</CODE>, <CODE>tuple</CODE>, <CODE>atom</CODE>, <CODE>name</CODE>, <CODE>procedure</CODE>, <CODE>cell</CODE>, <CODE>byteString</CODE>, <CODE>bitString</CODE>, <CODE>chunk</CODE>, <CODE>array</CODE>, <CODE>dictionary</CODE>, <CODE>bitArray</CODE>, <CODE><SPAN class="string">'class'</SPAN></CODE>, <CODE>object</CODE>, <CODE><SPAN class="string">'lock'</SPAN></CODE>, <CODE>port</CODE>, <CODE>space</CODE>, or <CODE><SPAN class="string">'thread'</SPAN></CODE>. If any other atom is returned, this means that <CODE><I>X</I></CODE> is of no standard primary type, but an implementation-dependent <A name="label39"></A>extension. </P></DD></DL><P> </P></DIV><TABLE align="center" border="0" cellpadding="6" cellspacing="6" class="nav"><TR bgcolor="#DDDDDD"><TD><A href="node3.html#section.values.general">&lt;&lt; Prev</A></TD><TD><A href="value.html">- Up -</A></TD><TD><A href="node5.html#section.values.comparison">Next &gt;&gt;</A></TD></TR></TABLE><HR><ADDRESS><A href="http://www.ps.uni-sb.de/~duchier/">Denys&nbsp;Duchier</A>, <A href="http://www.ps.uni-sb.de/~kornstae/">Leif&nbsp;Kornstaedt</A> and&nbsp;<A href="http://www.ps.uni-sb.de/~schulte/">Christian&nbsp;Schulte</A><BR><SPAN class="version">Version 1.4.0 (20090610)</SPAN></ADDRESS></BODY></HTML>