File: test.pl

package info (click to toggle)
source-highlight 3.1.4-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 9,404 kB
  • ctags: 5,526
  • sloc: sh: 10,428; cpp: 9,884; ansic: 8,483; makefile: 1,782; lex: 1,184; yacc: 1,009; php: 213; perl: 211; awk: 98; erlang: 94; java: 73; ruby: 69; python: 61; asm: 43; ml: 38; ada: 36; haskell: 27; xml: 23; lisp: 21; cs: 11; sql: 8; tcl: 6; sed: 3
file content (25 lines) | stat: -rw-r--r-- 766 bytes parent folder | download | duplicates (11)
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
%      +------------------------------+
%      |   test for Prolog source     |
%      |______________________________|

isinteger(X, L) :- type(X, int, L).

% booleans
type(true, bool, _).
type(false, bool, _).

type( and(X,Y), bool, L) :- isboolean(X,L), isboolean(Y,L).
type( or(X,Y), bool, L) :- isboolean(X,L), isboolean(Y,L).
type( not(X), bool, L) :- isboolean(X,L).

type( succ(X), int, L ) :- isinteger(X,L).
type( pred(X), int, L ) :- isinteger(X,L).
type( iszero(X), bool, L ) :- isinteger(X,L).
type( X < Y, bool, L ) :- isinteger(X,L), isinteger(Y,L).

% is_member(X,L) check whether X is in the list
% by using unification with occur check

is_member(_, []) :- fail.
is_member(X, [Y | _]) :- unify(X,Y).
is_member(X, [_ | List]) :- is_member(X, List).