This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
yap-6.3/Logtalk/manuals/refman/directives/uses2.html
pmoura d79dd807e6 Logtalk 2.29.1 files.
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1744 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
2006-12-28 13:03:34 +00:00

77 lines
3.2 KiB
HTML

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="content-type" content="application/xml+xhtml; charset=utf-8" />
<title>Logtalk entity directive: uses/2</title>
<link rel="stylesheet" href="../../screen.css" type="text/css" media="screen"/>
<link rel="stylesheet" href="../../print.css" type="text/css" media="print"/>
</head>
<body>
<div class="top-left">Logtalk reference manual</div>
<div class="top-right">Entity directive: uses/2</div>
<div class="bottom-left"><span class="page"/></div>
<div class="bottom-right"><span class="page"/></div>
<div class="navtop"><a href="../../index.html">contents</a> &gt; <a href="../index.html">reference manual</a> &gt; <a href="../index.html#directives">directives</a></div>
<h2 class="codenp">uses/2<span id="directives_uses2"/></h2>
<h4>Description</h4>
<pre>uses(Object, Predicates)
uses(Object, PredicatesAndAliases)</pre>
<p>
Declares that all calls (made from predicates defined in the category or object containing the directive) to the specified predicates are to be interpreted as messages to the specified object. Thus, this directive may be used to simplify writing of predicate definitions by allowing the programmer to omit the <code>Object::</code> prefix when using the predicates listed in the directive (as long as the predicate calls do not occur as arguments for user-defined meta_predicates or for non-standard Prolog meta_predicates not declared on the config files).
</p>
<p>
It is possible to specify a predicate alias using the notation <code>Functor/Arity::Alias/Arity</code>. Aliases may be used either for avoiding conflicts between predicates specificed in several <code>uses/2</code> directives or for giving more meanfingul names considering the using context of the predicates.
</p>
<h4>Template and modes</h4>
<pre>uses(+object_identifier, +predicate_indicator_list)
uses(+object_identifier, +predicate_indicator_alias_list)</pre>
<h4>Examples</h4>
<pre>:- uses(list, [append/3, member/2]).
foo :-
...,
findall(X, member(X, L), A), % the same as: findall(X, list::member(X, L), A)
append(A, B, C), % the same as: list::append(A, B, C)
...</pre>
<p>
Another example, using the extended notation that allows us to define predicate aliases:
</p>
<pre>:- uses(btrees, [new/1::new_btree/1]).
:- uses(queues, [new/1::new_queue/1]).
btree_to_queue :-
...,
new_btree(Tree), % the same as: btrees::new(Tree)
new_queue(Queue), % the same as: queues::new(Queue)
...</pre>
<div class="footer">
<div class="copyright">
<span>Copyright &copy; <a href="mailto:pmoura@logtalk.org">Paulo Moura</a> &mdash; <a href="http://logtalk.org">Logtalk.org</a></span><br/>
<span>Last updated on: October 26, 2006</span>
</div>
<div class="navbottom">
<span><a href="synchronized1.html">previous</a> | <a href="../../glossary.html">glossary</a> | <a href="../index.html#directives">next</a></span><br/>
<span><a href="http://validator.w3.org/check/referer">XHTML</a> + <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a></span>
</div>
</div>
</body>
</html>