37 lines
		
	
	
		
			813 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			37 lines
		
	
	
		
			813 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								/** @pred  recordaifnot(+ _K_, _T_,- _R_) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								If a term equal to  _T_ up to variable renaming is stored under key
							 | 
						||
| 
								 | 
							
								 _K_ fail. Otherwise, make term  _T_ the first record under key
							 | 
						||
| 
								 | 
							
								 _K_ and unify  _R_ with its reference.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								recordaifnot(K,T,R) :-
							 | 
						||
| 
								 | 
							
								        recorded(K,T,R), % force non-det binding to R.
							 | 
						||
| 
								 | 
							
								        '$still_variant'(R,T),
							 | 
						||
| 
								 | 
							
								        !,
							 | 
						||
| 
								 | 
							
								        fail.
							 | 
						||
| 
								 | 
							
								recordaifnot(K,T,R) :-
							 | 
						||
| 
								 | 
							
								        recorda(K,T,R).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** @pred  recordzifnot(+ _K_, _T_,- _R_) 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								If a term equal to  _T_ up to variable renaming is stored under key
							 | 
						||
| 
								 | 
							
								 _K_ fail. Otherwise, make term  _T_ the first record under key
							 | 
						||
| 
								 | 
							
								 _K_ and unify  _R_ with its reference.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This predicate is YAP specific.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								recordzifnot(K,T,R) :-
							 | 
						||
| 
								 | 
							
								        recorded(K,T,R),
							 | 
						||
| 
								 | 
							
								        '$still_variant'(R,T),
							 | 
						||
| 
								 | 
							
								        !,
							 | 
						||
| 
								 | 
							
								        fail.
							 | 
						||
| 
								 | 
							
								recordzifnot(K,T,R) :-
							 | 
						||
| 
								 | 
							
								        recordz(K,T,R).
							 | 
						||
| 
								 | 
							
								
							 |