annotate tk/basic @ 22:29cf617f49db default tip

newer CVS version
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 22 Apr 2016 16:47:13 +0900
parents 1c57a78f1d98
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
1 :- multifile tclause/2.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
2
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
3 % Basic Composite
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
4 % fact is not allowed. use a:-true form.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
5 % commented out one is defined internally for efficiency
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
6 % @(A) :- more,next(A).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
7 % #(A) :- A,next(#(A)).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
8 % [](A) :- A,next([](A)).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
9 % (A && B) :- (A,more) & B.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
10 % (A &@ B) :- A & @B.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
11 % keep(A) :- next(keep(A)),ifMore(A).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
12 % fin(A) :- next(fin(A)),ifEmpty(A).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
13 % gets(A,B) :- keep(@A = B).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
14 % (A<-B) :- A=B,stable(C),fin(A=C).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
15 (A<-B) :- C<--B,fin(A=C).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
16 skip :- @empty.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
17 <>(A) :- true & A.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
18 halt(A) :- A,!,empty.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
19 halt(A) :- @(halt(A)).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
20 stable(A) :- gets(A,A).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
21 % Framing
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
22 % A <= B :- more, <>(A:=B).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
23 A // B :- process(A),process(B).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
24 frame(A,B) :- frame(A), B.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
25 frames([H|T],B) :- frame(H),frames(T,B).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
26 frames([],B) :- B.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
27 readonlys([H|T],B) :- readonly(H),readonlys(T,B).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
28 readonlys([],B) :- B.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
29 % A:=B :- forall_parent(flag(A,assign)),@A=B.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
30 % readonly(A) :- flag(A,stay).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
31 % Closures
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
32 *(_) :- empty.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
33 *(A) :- more,A & *(A).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
34 % These are very slow in interpreter
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
35 while(A,B) :- (A,!,more,B) & while(A,B).
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
36 while(_,_) :- empty.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
37 (if A then B else _) :- A,!,B.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
38 (if _ then _ else C) :- C.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
39 (_ else _) :- fail.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
40 (if A then B) :- A,!,B.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
41 (if _ then _) :- true.
1c57a78f1d98 Initial revision
kono
parents:
diff changeset
42 % end