home *** CD-ROM | disk | FTP | other *** search
- /************************************************************************
- * *
- * The SB-Prolog System *
- * Copyright SUNY at Stony Brook, 1986; University of Arizona, 1987 *
- * *
- ************************************************************************/
-
- /*-----------------------------------------------------------------
- SB-Prolog is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY. No author or distributor
- accepts responsibility to anyone for the consequences of using it
- or for whether it serves any particular purpose or works at all,
- unless he says so in writing. Refer to the SB-Prolog General Public
- License for full details.
-
- Everyone is granted permission to copy, modify and redistribute
- SB-Prolog, but only under the conditions described in the
- SB-Prolog General Public License. A copy of this license is
- supposed to have been given to you along with SB-Prolog so you
- can know your rights and responsibilities. It should be in a
- file named COPYING. Among other things, the copyright notice
- and this notice must be preserved on all copies.
- ------------------------------------------------------------------ */
- /* index.P */
-
- index(P,N,K) :-
- ($atom(P), integer(N), integer(K)) ->
- ((K > 0, K =< N) ->
- ('_$index'(P,N,K1) ->
- (K =:= K1 ->
- true ;
- ($telling(X), $tell(stderr),
- $write('*** Warning: overwriting indexing directive for '),
- $write(P), $write('/'), $write(N), $nl,
- $write(' old index: arg# '), $write(K1),
- $write(', new index: arg# '), $write(K), $nl,
- $told, $tell(X),
- $retract('_$index'(P,N,K1)),
- $assert('_$index'(P,N,K))
- )
- ) ;
- $assert('_$index'(P,N,K))
- ) ;
- ($telling(X), $tell(stderr),
- $write('*** Error: index value for '),
- $write(P), $write('/'), $write(N),
- $write(' out of range: '), $write(K), $nl,
- $told, $tell(X)
- )
- ) ;
- ($telling(X), $tell(stderr),
- $write('*** illegal arguments to index/1: <'),
- $write(P), $write(', '), $write(N), $write(', '), $write(K),
- $write('> ***'), $nl
- ).
-
- '_$index'(_,_,_) :- fail. % to avoid error messages
-
-