58 lines
		
	
	
		
			837 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			837 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | 
 | ||
|  | :- object(date(_Year, _Month, _Day)). | ||
|  | 
 | ||
|  | 
 | ||
|  | 	:- info([ | ||
|  | 		version is 1.0, | ||
|  | 		authors is 'Paulo Moura', | ||
|  | 		date is 1998/3/23, | ||
|  | 		comment is 'Dates as parametric objects.', | ||
|  | 		parnames is ['Year', 'Month', 'Day']]). | ||
|  | 
 | ||
|  | 
 | ||
|  | 	:- public(year/1). | ||
|  | 	:- mode(year(?integer), one). | ||
|  | 
 | ||
|  | 	:- public(month/1). | ||
|  | 	:- mode(month(?integer), one). | ||
|  | 
 | ||
|  | 	:- public(day/1). | ||
|  | 	:- mode(day(?integer), one). | ||
|  | 
 | ||
|  | 	:- public(today/0). | ||
|  | 	:- mode(today, one). | ||
|  | 
 | ||
|  | 	:- public(leap_year/0). | ||
|  | 	:- mode(leap_year, zero_or_one). | ||
|  | 
 | ||
|  | 
 | ||
|  | 	year(Year) :- | ||
|  | 		parameter(1, Year). | ||
|  | 
 | ||
|  | 
 | ||
|  | 	month(Month) :- | ||
|  | 		parameter(2, Month). | ||
|  | 
 | ||
|  | 
 | ||
|  | 	day(Day) :- | ||
|  | 		parameter(3, Day). | ||
|  | 
 | ||
|  | 
 | ||
|  | 	today :- | ||
|  | 		{lgt_current_date(Year, Month, Day)}, | ||
|  | 		parameter(1, Year), | ||
|  | 		parameter(2, Month), | ||
|  | 		parameter(3, Day). | ||
|  | 
 | ||
|  | 
 | ||
|  | 	leap_year :- | ||
|  | 		parameter(1, Year), | ||
|  | 		(0 is mod(Year, 4), | ||
|  | 		 0 is mod(Year, 100) | ||
|  | 		 ; | ||
|  | 		 0 is mod(Year, 400)), | ||
|  | 		!. | ||
|  | 
 | ||
|  | 
 | ||
|  | :- end_object. |