Ticket #2 (new defect)

Opened 5 years ago

joinE not lazy enough

Reported by: camio Owned by: somebody
Priority: blocker Milestone:
Version: Keywords:
Cc:

Description

This is an oldie. It is exemplified in the tutorial with the metronome example. It seems to be one step behind. Looking at the implementation of joinE:

-- Note, joinE should not be called with an infinite list of events that all
-- occur at the same time.  It can't decide which occurs first.
joinE :: (Ord t) => EventG t (EventG t a) -> EventG t a
joinE (Event (Future (Max MaxBound, _))) = mempty
joinE (Event (Future (t0h, e `Stepper` ((Event (Future (Max MaxBound, _)))))))
  = adjustE t0h e
joinE (Event (Future (t0h, e `Stepper` ee'@((Event (Future (t1h, _)))))))
  = happy (adjustE t0h e) t1h (adjustTopE t0h (joinE ee'))

we can see how it hast to look two events into the future.

Note: See TracTickets for help on using tickets.