Sí, le he dicho tipo de dato "function" para llamarlo de alguna manera.
 
Estoy intentado hacer un diseño que me permita almacenar cualquier tipo de acontecimiento/festividad que se repita a lo largo del tiempo intentando generalizarlo para cualquier tipo de calendario (no sólamente el gregoriano). 
Pensé en situaciones como estás:  
 Cita:  San Fulano
Inicio: dia X del año 
Fin: dia X del año,
Periodo: 1 año
tipo: gregoriano
 
Fiesta mayor de País de Nunca Jamás
Inicio:  dia 6 de la semana 1 del mes 8
Fin: dia 7 de la semana 1 del mes 8
Periodo: 1 año
tipo: gregoriano
 
Ramadán:
Inicio: dia 1 del mes 9 del año
Fin: dia final del mes 9 del año
Periodo: 1 año
tipo: musulmán
 
acontecimiento trimensual inventado:
Inicio: dia 1 del mes
Fin: dia 1 del mes
Periodo: 3 meses
tipo: gregoriano
    Y aquí un ejemplo que se saldría del patrón: 
 Cita:  Año Xacobeo: 
Inicio: 1 dia mes 1
Fin: 31 dia de mes 
Periodo: ???
tipo: gregoriano
    En realidad es el año tal que el 25 de julio cae en domingo y no tiene un periodo regular. 
Por tanto, se me ocurrió que una forma más generica de guardar los datos de un acontecimiento/festividad es mediante el uso de un predicado. Que no es más que una función que devuelve true o false. 
¿Hay alternativas mejores? 
Un saludo!