YAP
7.1.0
dbqueues.yap
Go to the documentation of this file.
1
/**
2
* @file dbqueues.yap
3
* @author VITOR SANTOS COSTA <vsc@VITORs-MBP.lan>
4
* @date Tue Nov 17 15:01:49 2015
5
*
6
* @brief A library to support queues with no-backtrackable queues.
7
*
8
*
9
*/
10
11
12
:- module(
nbqueue
, [
13
nb_enqueue/2,
14
nb_dequeue/2,
15
nb_clean_queue/1,
16
nb_size/2
17
]).
18
19
/**
20
* @defgroup dbqueues Non-backtrackable queues in YAP.
21
* @ingroup YAPLibrary
22
23
A library to implement queues of NB Terms
24
25
*/
26
27
28
:-
unhide_atom
(
'$init_nb_queue'
).
29
:-
unhide_atom
(
'$nb_enqueue'
).
30
:-
unhide_atom
(
'$nb_dequeue'
).
31
32
33
nb_enqueue(
Name
,
El
)
:-
var
(
Name
),
34
throw
(error(instantiation_error(
Name
),nb_enqueue(
Name
,
El
))).
35
nb_enqueue(
Name
,
El
)
:-
\+
atom
(
Name
),
atom,
36
throw
(error(type_error_atom(
Name
),nb_enqueue(
Name
,
El
))).
37
nb_enqueue(
Name
,
El
)
:-
38
recorded
(
'$nb_queue'
,[
Name
|
Ref
],
_
),
recorded,
39
recorded
:
'$nb_enqueue'(
Ref
,
El
).
40
nb_enqueue(
Name
,
El
)
:-
41
nb_enqueue
:
'$init_nb_queue'(
Ref
),
42
recorda
(
'$nb_queue'
,[
Name
|
Ref
],
_
),
43
recorda
:
'$nb_enqueue'(
Ref
,
El
).
44
45
46
nb_dequeue(
Name
,
El
)
:-
var
(
Name
),
47
throw
(error(instantiation_error(
Name
),nb_dequeue(
Name
,
El
))).
48
nb_dequeue(
Name
,
El
)
:-
\+
atom
(
Name
),
atom,
49
throw
(error(type_error_atom(
Name
),nb_dequeue(
Name
,
El
))).
50
nb_dequeue(
Name
,
El
)
:-
51
recorded
(
'$nb_queue'
,[
Name
|
Ref
],
R
),
52
( prolog
:
'$nb_dequeue'(
Ref
,
El
)
->
53
'$nb_dequeue'
54
;
55
erase
(
R
),
56
erase
57
).
58
59
nb_clean_queue(
Name
)
:-
60
recorded
(
'$nb_queue'
,[
Name
|
Ref
],
R
),
recorded,
61
erase
(
R
),
62
nb_dequeue_all(
Ref
).
63
nb_clean_queue(
_
).
64
65
nb_dequeue_all(
Ref
)
:-
66
( prolog
:
'$nb_dequeue'(
Ref
,
_
)
->
nb_dequeue_all(
Ref
)
;
nb_dequeue_all ).
67
68
nb_dequeue_size(
Ref
,
Size
)
:-
69
nb_dequeue_size
:
'$nb_size'(
Ref
,
Size
).
70
71
throw/1
throw(+ Ball)
erase/1
erase(+ R)
recorda/3
recorded/3
Definition:
dbase.c:5369
unhide_atom/1
unhide_atom(+ Atom)
atom/1
atom( T)
var/1
var( T)
library
dbqueues.yap
Generated by
1.9.3