A function A → B → C → D can currently be applied to:
() → A → B → C → D
(A) → B → C → D
(A, B) → C → D
(A, B, C) → D
Since the parameter edges are indexed, we can add out-of-order application forms:
(A, C) → B → D
(B) → A → C → D
(B, C) → A → D
(C) → A → B → D