git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@53 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
		
			
				
	
	
		
			47 lines
		
	
	
		
			823 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			823 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
 | 
						|
:- object(integer,
 | 
						|
	extends(number)).
 | 
						|
 | 
						|
 | 
						|
	:- info([
 | 
						|
		version is 1.0,
 | 
						|
		authors is 'Paulo Moura',
 | 
						|
		date is 2000/7/24,
 | 
						|
		comment is 'Integer data type predicates.']).
 | 
						|
 | 
						|
 | 
						|
	:- public(between/3).
 | 
						|
 | 
						|
	:- mode(between(+integer, +integer, ?integer), zero_or_more).
 | 
						|
 | 
						|
	:- info(between/3, [
 | 
						|
		comment is 'Returns integers in the interval defined by the two first arguments.',
 | 
						|
		argnames is ['Lower', 'Upper', 'Integer']]).
 | 
						|
 | 
						|
 | 
						|
	between(Lower, Upper, Integer) :-
 | 
						|
		integer(Lower),
 | 
						|
		integer(Upper),
 | 
						|
		(var(Integer) ->
 | 
						|
			Lower =< Upper,
 | 
						|
			generate(Lower, Upper, Integer)
 | 
						|
			;
 | 
						|
			integer(Integer),
 | 
						|
			Lower =< Integer,
 | 
						|
			Integer =< Upper).
 | 
						|
 | 
						|
 | 
						|
	generate(Lower, _, Lower).
 | 
						|
 | 
						|
	generate(Lower, Upper, Integer) :-
 | 
						|
		Lower < Upper,
 | 
						|
		Next is Lower + 1,
 | 
						|
		generate(Next, Upper, Integer).
 | 
						|
 | 
						|
 | 
						|
	valid(Integer) :-
 | 
						|
		integer(Integer).
 | 
						|
 | 
						|
 | 
						|
:- end_object.
 |