File: gensym.yap

package info (click to toggle)
yap 5.1.1-3
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 16,124 kB
  • ctags: 14,650
  • sloc: ansic: 122,796; perl: 22,545; sh: 3,768; java: 1,277; makefile: 1,191; xml: 739; tcl: 624; lisp: 142; awk: 9
file content (24 lines) | stat: -rw-r--r-- 408 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
:- module(gensym, [
	gensym/2,
	reset_gensym/1,
	reset_gensym/0
    ]).

:- dynamic gensym_key/2.

gensym(Atom, New) :-
	retract(gensym_key(Atom,Id)), !,
	atomic_concat(Atom,Id,New),
	NId is Id+1,
	assert(gensym_key(Atom,NId)).
gensym(Atom, New) :-
	atomic_concat(Atom,1,New),
	assert(gensym_key(Atom,2)).

reset_gensym(Atom) :-
	retract(gensym_key(Atom,_)).

reset_gensym :-
	retractall(gensym_key(_,_)).