3 Part of CHR
(Constraint Handling Rules
)
6 E
-mail
: Tom
.Schrijvers
@cs.kuleuven
.ac
.be
7 WWW
: http
://www
.swi
-prolog
.org
8 Copyright
(C
): 2003-2004, K
.U
. Leuven
10 This program is free software
; you can redistribute it
and/or
11 modify it under the terms of the GNU General Public License
12 as published by the Free Software Foundation
; either version
2
13 of the License
, or (at your option
) any later version
.
15 This program is distributed
in the hope that it will be useful
,
16 but WITHOUT ANY WARRANTY
; without even the implied warranty of
17 MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE
. See the
18 GNU General Public License
for more details
.
20 You should have received a copy of the GNU Lesser General Public
21 License along with this library
; if not, write to the Free Software
22 Foundation
, Inc
., 59 Temple Place
, Suite
330, Boston
, MA
02111-1307 USA
24 As a special exception
, if you
link this library with other files
,
25 compiled with a Free Software compiler
, to produce an executable
, this
26 library does
not by itself cause the resulting executable to be covered
27 by the GNU General Public License
. This exception does
not however
28 invalidate any other reasons why the executable file might be covered by
29 the GNU General Public License
.
43 listmap_lookup
([K
-V
|R
],Key
,Q
) :-
48 listmap_lookup
(R
,Key
,Q
)
51 listmap_insert
([],Key
,Value
,[Key
-Value
]).
52 listmap_insert
([P
|R
],Key
,Value
,ML
) :-
61 listmap_insert
(R
,Key
,Value
,Tail
)
64 listmap_merge
(ML1
,ML2
,F
,G
,ML
) :-
70 ML1
= [P1
|R1
], P1
= K1
-V1
,
71 ML2
= [P2
|R2
], P2
= K2
-V2
,
74 Call
=.. [F
,V1
,V2
,NV
],
77 listmap_merge
(R1
,R2
,F
,G
,Tail
)
82 listmap_merge
(R1
,ML2
,F
,G
,Tail
)
87 listmap_merge
(ML1
,R2
,F
,G
,Tail
)
92 listmap_remove
([],_
,[]).
93 listmap_remove
([P
|R
],Key
,NLM
) :-
102 listmap_remove
(R
,Key
,Tail
)