### Rules to create a 365-day calendar. ### This version uses dot notation. sp {initialize*calendar (state ^superstate nil) --> ( ^year ) ( ^value 2003)} sp {initialize*months (state ^year ) --> ( ^month.name january) ( ^month.name february) ( ^month.name march) ( ^month.name april) ( ^month.name may) ( ^month.name june) ( ^month.name july) ( ^month.name august) ( ^month.name september) ( ^month.name october) ( ^month.name november) ( ^month.name december)} sp {initialize*31day*length (state ^year.month ) ( ^name << january march may july august october december >> ) --> ( ^days 31)} sp {initialize*30day*length (state ^year.month ) ( ^name << september april june november >> ) --> ( ^days 30)} ### Note that is needed in the following rule and cannot be ### replaced by a dot. sp {initialize*february*length (state ^year.month ) ( ^name february) --> ( ^days 28)} sp {initialize*first*days (state ^year.month ) --> ( ^date 1)} ### Note that is needed in the following rule and cannot be ### replaced by a dot. sp {initialize*remaining*days (state ^year.month ) ( ^days ) ( ^date { < } ) --> ( ^date ( + 1 ))}