: notify-alarm-thread ( -- )
alarm-thread get-global interrupt ;
-: normalize-argument ( obj -- nanoseconds )
- >duration duration>nanoseconds >integer ;
+GENERIC: >nanoseconds ( obj -- duration/f )
+M: f >nanoseconds ;
+M: real >nanoseconds >integer ;
+M: duration >nanoseconds duration>nanoseconds >integer ;
: <alarm> ( quot start interval -- alarm )
alarm new
- swap dup [ normalize-argument ] when >>interval
- swap dup [ normalize-argument nano-count + ] when >>start
+ swap >nanoseconds >>interval
+ swap >nanoseconds nano-count + >>start
swap >>quot
<box> >>entry ;
32 2 e * + 2 i * + h - k - 7 mod :> l
a 11 h * + 22 l * + 451 /i :> m
- h l + 7 m * - 114 + 31 /mod 1 + :> ( month day )
- month day ;
+ h l + 7 m * - 114 + 31 /mod 1 + ;
M: integer easter ( year -- timestamp )
dup easter-month-day <date> ;
: microseconds ( x -- duration ) 1000000 / seconds ;
: nanoseconds ( x -- duration ) 1000000000 / seconds ;
-GENERIC: >duration ( obj -- duration/f )
-M: duration >duration ;
-M: real >duration seconds ;
-M: f >duration ;
-
GENERIC: year ( obj -- n )
M: integer year ;
M: timestamp year year>> ;