diff cp.pl.c @ 0:cfb7c6b24319

Initial revision
author kono
date Thu, 30 Aug 2007 14:57:44 +0900
parents
children 61743469ee56
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cp.pl.c	Thu Aug 30 14:57:44 2007 +0900
@@ -0,0 +1,130 @@
+/*
+ Copyright (C) 1988, Shinji Kono 
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license, but changing it is not allowed.  You can also
+ use this wording to make the terms for other programs.
+
+ send your comments to kono@mtl.utokyo.ac.jp
+*/
+/* 
+   support routine for compatibilities
+   */
+
+#ifdef CPROLOG
+
+help :- tokio_help.
+
+compile0(X) :- [X].
+
+numbervars(X, V, V).
+
+/*
+% numbervars('$VAR'(V0), V0, V) :- !, V is V0+1.
+numbervars(Vname, Vname, V0, V) :- 
+  	var(Vname),!, 
+	V is V0+1,name(V0,Lv),name(Vname,[95|Lv]).  %%% _001
+numbervars(X, V0, V) :-
+	functor(X, F, A), 
+	numbervars_args(0, A, X, V0, V),!.
+
+% :- mode numbervars_args(+,+,+,-,+,-).
+numbervars_args(N, N, _, V, V) :- !.
+numbervars_args(K, N, X, V0, V) :-
+	K1 is K+1, 
+	arg(K1, X, XK),   
+	numbervars(XK, V0, V1), 
+	numbervars_args(K1, N, X, V1, V).
+*/
+
+
+#ifdef CPROLOG15
+term_expansion(X,X).
+:-unknown(X,trace).
+#endif
+
+:- (ttyflush;assert((ttyflush:-nl))).
+
+:-asserta((c_post(Vname, Vname, V0, V) :- 
+  	var(Vname),!, 
+	V is V0+1,name(V0,Lv),name(Vname,[95|Lv]))).  %%% _001
+% c_post continue to to.pl
+
+:-abolish(c_post_atomic,2).
+c_post_atomic([],[]) :- !.
+c_post_atomic(Number,Number) :- number(Number),!.
+c_post_atomic(=,' = ') :- !.     % for 1.2, Do not ask me why.
+c_post_atomic(Atomic,Qatomic):-
+     name(Atomic,La),La=[H|_],[H]\="'",[H]\="_",!,
+     concatenate(["'",La,"'"],Nla),name(Qatomic,Nla).
+c_post_atomic(Atomic,Atomic).
+
+:-abolish(write_clause0,1).
+write_clause0((X:-true)) :- 
+    c_post(X, XX, 0, _), write(XX), put("."), nl,!,fail. %%% writeq --> write
+write_clause0(X) :- 
+    c_post(X, XX, 0, _), write(XX), put("."), nl,!,fail. %%% writeq --> write
+
+:-abolish(r_cputime,1).
+r_cputime(X) :- X is cputime.
+
+:-abolish(tokiocomp1,1). 
+tokiocomp1(X) :- tokiocomp2(X).
+tokiocomp1(_) :-
+    telling(I),tell(user),
+    read(Next),tell(I), !, tokiocomp1(Next). 
+tokiocomp1(_) :- c_error((nl,write('read error'),nl)).
+
+:-abolish(read_filter,2).
+read_filter(X,Name) :- telling(I),tell(user),
+        repeat,read(X),
+	filter(X,Name),tell(I).
+
+#endif
+
+#ifdef SWIPROLOG
+nofileerrors.
+ttynl :- nl,flush.
+#endif
+
+#if defined(SICSTUS) || defined(SWIPROLOG)
+compile0(F) :- 
+    prolog_flag(single_var_warnings,_),!,
+    prolog_flag(single_var_warnings,X,off),
+    prolog_flag(discontiguous_warnings,Y,off),
+    compile(F),
+    prolog_flag(single_var_warnings,_,X),
+    prolog_flag(discontiguous_warnings,_,Y).
+compile0(F) :- 
+    style_check(-singleton),!,
+    style_check(-discontiguous),!,
+    compile(F),
+    style_check(+discontiguous),
+    style_check(+singleton).
+compile0(F) :- 
+    compile(F).
+#endif
+
+#if !defined(SICSTUS)||!defined(SWIPROLOG)
+
+% copy(X,Y) :- copy_term(X,Y). % for sicstus prolog 
+
+copy(X, Y) :- copy(X, Y, var, _). 
+copy(X, Y, Vlist0, Vlist1) :- nonvar(X), 
+    functor(X, F, A), functor(Y, F, A), !, 
+    copy(A, X, Y, Vlist0, Vlist1). 
+copy(X, Y, Vlist0, Vlist0) :- map(Vlist0, X, Y), !. 
+copy(X, Y, Vlist0, var(X, Y, Vlist0)). 
+copy(0, _, _, Vlist0, Vlist0) :- !. 
+copy(N, X, Y, Vlist0, Vlist2) :- 
+    arg(N, X, Xn), copy(Xn, Yn, Vlist0, Vlist1), arg(N, Y, Yn), 
+    M is N-1, !, copy(M, X, Y, Vlist1, Vlist2). 
+map(var(X, Y, _), Var, Y) :- X==Var, !. 
+map(var(_,_,Rest), Var, Y) :- map(Rest, Var, Y). 
+ 
+#else
+
+copy(X,Y) :- copy_term(X,Y).
+
+#endif
+ 
+/* end  */