Currying rewrites a function with multiple arguments as a sequence of unary functions. In Haskell, a function such as `f = \x -> \y -> ...` accepts one argument and returns another function. Because functions are values, partially applied functions can be collected, transformed, and combined into larger operations. section 8.4.1
Transforming CSV data
Optional CSV arguments become transformations. The slice interval is a tuple, so `mSliceOp = fmap (uncurry slice) mSliceInterval` adapts the binary `slice` function to accept that tuple. `uncurry` is the counterpart of `curry`: it converts a curried function into one receiving a pair, while `curry` performs the reverse conversion. section 8.4.1






