// previous: Tuple // current: int => Tuple Func> bumpLabel = s => Tuple.Create(s + 1, s); // previous: Tuple => Tuple>> // current: int => int => Tuple>> Func>>>> labelLeafCurried = labelValue => s => Tuple.Create(s, leaf(labeled(labelValue, lf.Value))); Tuple bumpResult = bumpLabel(label); return labelLeafCurried(bumpResult.Item2)(bumpResult.Item1);