File: test.pl

package info (click to toggle)
source-highlight 3.1.7-1
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 10,332 kB
  • ctags: 5,233
  • sloc: sh: 11,270; cpp: 10,206; ansic: 9,515; makefile: 1,865; lex: 1,200; yacc: 1,021; php: 213; perl: 211; awk: 98; erlang: 94; lisp: 90; java: 75; ruby: 69; python: 61; asm: 43; ml: 38; ada: 36; haskell: 27; xml: 23; cs: 11; sql: 8; tcl: 6; sed: 4
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).