First I'll review a little background, then I'll ask my questions.
Background
The EventF type looks like this:
data EventF a b
= Event { context :: Context,
whole :: Maybe a,
part :: a,
value :: b}
-- Defined at src/Sound/Tidal/Pattern.hs:619:1
That's a little more abstract than we need for this discussion. Most of the EventFs we work with are Events:
type Event a = EventF (ArcF Time) a
-- Defined at src/Sound/Tidal/Pattern.hs:627:1
And an ArcF Time is just a pair of Times representing an interval. Thus every Event carries at least two and maybe four Time values: WHen the part starts and stops, and maybe when the whole starts and stops. Since the whole is optional, I'm guessing the part is what determines the duration of the Event.
My questions
Am I correct that the part is what determiens the duration of the Event?
What is the meaning of the whole?
Why, when, and how should I use wholes?
Why can whole be missing sometimes?
When do otherwise-identical Events with differrent wholes behave differently?