packages feed

atomo-0.2: prelude/time.atomo

Timer do: (b: Block) every: (n: Number) :=
  { { Timer sleep: n; b spawn } repeat } spawn

Timer do: (b: Block) after: (n: Number) :=
  { Timer sleep: n; b call } spawn

(b: Block) time :=
  { before = Timer now
    b call
    after = Timer now
    after - before
  } call

-- units!
(n: Number) us := n
(n: Number) microseconds := n us
(n: Number) microsecond := n us

(n: Number) ms := n * 1000
(n: Number) milliseconds := n ms
(n: Number) millisecond := n ms

(n: Number) seconds := n * 1000000
(n: Number) second := n seconds

(n: Number) minutes := (n * 60) seconds
(n: Number) minute := n minutes

(n: Number) hours := (n * 60) minutes
(n: Number) hour := n hours

(n: Number) days := (n * 24) hours
(n: Number) day := n days

(n: Number) weeks := (n * 7) days
(n: Number) week := n weeks

(n: Number) months := (n * 30) days
(n: Number) month := n months

(n: Number) years := (n * 365) days
(n: Number) year := n years