/usr/share/doc/gprolog-doc/gprolog.html/gprolog018.html is in gprolog-doc 1.3.0-6.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<META name="GENERATOR" content="hevea 1.10">
<LINK rel="stylesheet" type="text/css" href="gprolog.css">
<TITLE>Types and modes</TITLE>
</HEAD>
<BODY TEXT=black BGCOLOR=white>
<A HREF="gprolog017.html"><IMG SRC="previous_motif.gif" ALT="Previous"></A>
<A HREF="gprolog016.html"><IMG SRC="contents_motif.gif" ALT="Up"></A>
<A HREF="gprolog019.html"><IMG SRC="next_motif.gif" ALT="Next"></A>
<HR>
<H3 CLASS="subsection"><A NAME="htoc31">5.2</A>  Types and modes</H3><P>
<A NAME="Types-and-modes"></A>
The templates part defines, for each argument of the concerned built-in
predicate, its mode and type. The mode specifies whether or not the argument
must be instantiated when the built-in predicate is called. The mode is
encoded with a symbol just before the type. Possible modes are:</P><UL CLASS="itemize"><LI CLASS="li-itemize"><TT>+</TT>: the argument must be instantiated.</LI><LI CLASS="li-itemize"><TT>-</TT>: the argument must be a variable (will be instantiated if
the built-in predicate succeeds).</LI><LI CLASS="li-itemize"><TT>?</TT>: the argument can be instantiated or a variable.</LI></UL><P>The type of an argument is defined by the following table:</P><TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1><TR><TD VALIGN=top ALIGN=left NOWRAP>
Type</TD><TD VALIGN=top ALIGN=left>Description</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT><I>TYPE</I>_list</TT></TD><TD VALIGN=top ALIGN=left>a list whose the type of each element is
<I><TT>TYPE</TT></I></TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT><I>TYPE1</I>_or_<I>TYPE2</I></TT></TD><TD VALIGN=top ALIGN=left>a term whose type is either
<I><TT>TYPE1</TT></I> or <I><TT>TYPE2</TT></I></TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>atom</TT></TD><TD VALIGN=top ALIGN=left>an atom</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>atom_property</TT></TD><TD VALIGN=top ALIGN=left>an atom property (section <A HREF="gprolog042.html#atom-property/2">7.19.12</A>)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>boolean</TT></TD><TD VALIGN=top ALIGN=left>the atom <TT>true</TT> or <TT>false</TT></TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>byte</TT></TD><TD VALIGN=top ALIGN=left>an integer ≥ 0 and ≤ 255</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>callable_term</TT></TD><TD VALIGN=top ALIGN=left>an atom or a compound term</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>character</TT></TD><TD VALIGN=top ALIGN=left>a single character atom</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>character_code</TT></TD><TD VALIGN=top ALIGN=left>an integer ≥ 1 and ≤ 255</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>clause</TT></TD><TD VALIGN=top ALIGN=left>a clause (fact or rule)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>close_option</TT></TD><TD VALIGN=top ALIGN=left>a close option (section <A HREF="gprolog033.html#close/2">7.10.7</A>)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>compound_term</TT></TD><TD VALIGN=top ALIGN=left>a compound term</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>evaluable</TT></TD><TD VALIGN=top ALIGN=left>an arithmetic expression (section <A HREF="gprolog029.html#Evaluation-of-an-arithmetic-expression">7.6.1</A>)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>fd_bool_evaluable</TT></TD><TD VALIGN=top ALIGN=left>a boolean FD expression (section <A HREF="gprolog061.html#Boolean-FD-expressions">8.7.1</A>)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>fd_labeling_option</TT></TD><TD VALIGN=top ALIGN=left>an FD labeling option (section <A HREF="gprolog063.html#fd-labeling/2">8.9.1</A>)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>fd_evaluable</TT></TD><TD VALIGN=top ALIGN=left>an arithmetic FD expression (section <A HREF="gprolog060.html#FD-arithmetic-expressions">8.6.1</A>)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>fd_variable</TT></TD><TD VALIGN=top ALIGN=left>an FD variable</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>flag</TT></TD><TD VALIGN=top ALIGN=left>a Prolog flag (section <A HREF="gprolog045.html#set-prolog-flag/2">7.22.1</A>)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>float</TT></TD><TD VALIGN=top ALIGN=left>a floating point number</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>head</TT></TD><TD VALIGN=top ALIGN=left>a head of a clause (atom or compound term)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>integer</TT></TD><TD VALIGN=top ALIGN=left>an integer</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>in_byte</TT></TD><TD VALIGN=top ALIGN=left>an integer ≥ 0 and ≤ 255 or <TT>-1</TT> (for
the end-of-file)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>in_character</TT></TD><TD VALIGN=top ALIGN=left>a single character atom or the atom
<TT>end_of_file</TT> (for the end-of-file)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>in_character_code</TT></TD><TD VALIGN=top ALIGN=left>an integer ≥ 1 and ≤ 255 or
<TT>-1</TT> (for the end-of-file)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>io_mode</TT></TD><TD VALIGN=top ALIGN=left>an atom in: <TT>read</TT>, <TT>write</TT> or
<TT>append</TT></TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>list</TT></TD><TD VALIGN=top ALIGN=left>the empty list <TT>[]</TT> or a non-empty list
<TT>[_|_]</TT></TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>nonvar</TT></TD><TD VALIGN=top ALIGN=left>any term that is not a variable</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>number</TT></TD><TD VALIGN=top ALIGN=left>an integer or a floating point number</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>operator_specifier</TT></TD><TD VALIGN=top ALIGN=left>an operator specifier (section <A HREF="gprolog037.html#op/3:(Term-input/output)">7.14.10</A>)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>os_file_property</TT></TD><TD VALIGN=top ALIGN=left>an operating system file property (section <A HREF="gprolog050.html#file-property/2">7.27.11</A>)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>predicate_indicator</TT></TD><TD VALIGN=top ALIGN=left>a term <TT>Name/Arity</TT> where
<TT>Name</TT> is an atom and <TT>Arity</TT> an integer ≥ 0. A callable
term can be given if the <TT>strict_iso</TT> Prolog flag is switched
off (section <A HREF="gprolog045.html#set-prolog-flag/2">7.22.1</A>)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>predicate_property</TT></TD><TD VALIGN=top ALIGN=left>a predicate property
(section <A HREF="gprolog031.html#predicate-property/2">7.8.2</A>)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>read_option</TT></TD><TD VALIGN=top ALIGN=left>a read option (section <A HREF="gprolog037.html#read-term/3">7.14.1</A>)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>socket_address</TT></TD><TD VALIGN=top ALIGN=left>a term of the form <TT>’AF_UNIX’(A)</TT> or
<TT>’AF_INET’(A,N)</TT> where <TT>A</TT> is an atom and <TT>N</TT> an
integer</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>socket_domain</TT></TD><TD VALIGN=top ALIGN=left>an atom in: <TT>’AF_UNIX’</TT> or
<TT>’AF_INET’</TT></TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>source_sink</TT></TD><TD VALIGN=top ALIGN=left>an atom identifying a source or a sink</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>stream</TT></TD><TD VALIGN=top ALIGN=left>a stream-term: a term of the form <TT>’$stream’(N)</TT>
where <TT>N</TT> is an integer ≥ 0</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>stream_option</TT></TD><TD VALIGN=top ALIGN=left>a stream option (section <A HREF="gprolog033.html#open/4">7.10.6</A>)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>stream_or_alias</TT></TD><TD VALIGN=top ALIGN=left>a stream-term or an alias (atom)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>stream_position</TT></TD><TD VALIGN=top ALIGN=left>a stream position: a term
<TT>’$stream_position’(I1, I2, I3, I4)</TT> where
<TT>I1</TT>, <TT>I2</TT>, <TT>I3</TT> and <TT>I4</TT> are integers</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>stream_property</TT></TD><TD VALIGN=top ALIGN=left>a stream property (section <A HREF="gprolog033.html#stream-property/2">7.10.10</A>)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>stream_seek_method</TT></TD><TD VALIGN=top ALIGN=left>an atom in: <TT>bof</TT>, <TT>current</TT>
or <TT>eof</TT></TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>term</TT></TD><TD VALIGN=top ALIGN=left>any term</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>var_binding_option</TT></TD><TD VALIGN=top ALIGN=left>a variable binding option
(section <A HREF="gprolog028.html#bind-variables/2">7.5.3</A>)</TD></TR>
<TR><TD VALIGN=top ALIGN=left NOWRAP>
<TT>write_option</TT></TD><TD VALIGN=top ALIGN=left>a write option (section <A HREF="gprolog037.html#write-term/3">7.14.6</A>)</TD></TR>
</TABLE>
<HR SIZE=2>
Copyright (C) 1999-2007 Daniel Diaz
Verbatim copying and distribution of this entire article is permitted in any
medium, provided this notice is preserved. <A HREF="index.html#copyright">More about the copyright</A>
<HR>
<A HREF="gprolog017.html"><IMG SRC="previous_motif.gif" ALT="Previous"></A>
<A HREF="gprolog016.html"><IMG SRC="contents_motif.gif" ALT="Up"></A>
<A HREF="gprolog019.html"><IMG SRC="next_motif.gif" ALT="Next"></A>
</BODY>
</HTML>
|