git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1903 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
		
			
				
	
	
		
			39 lines
		
	
	
		
			875 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			875 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
 | 
						|
:- object(integer,
 | 
						|
	extends(number)).
 | 
						|
 | 
						|
	:- info([
 | 
						|
		version is 1.1,
 | 
						|
		author is 'Paulo Moura',
 | 
						|
		date is 2007/4/20,
 | 
						|
		comment is 'Integer data type predicates.']).
 | 
						|
 | 
						|
	:- public(between/3).
 | 
						|
	:- mode(between(+integer, +integer, +integer), zero_or_one).
 | 
						|
	:- 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.
 |