# event wait = \n w e . w n event = \x w e . e x merge = \al bl . al (\a as . bl (\b bs . a (\aw . b (\bw . lessthan aw bw (cons a (merge as (cons (wait (sub bw aw)) bs))) (cons b (merge (cons (wait (sub aw bw)) as) bs))) (\e . cons b (merge al bs))) (\e . cons a (merge as bl))) al) bl merges = foldr merge nil play = \l . l (\x xs . x (\w . { wait : w } (play xs)) (\e . e (play xs))) (error play)