In this case, you cannot reduce it. For lambda, there is only one argument, namely (DataType arg1 arg2). These are not separate arguments, as indicated by parentheses, but instead, you map the patterns to the constructor. In fact, the compiler will reduce this expression to more than
\arg -> case arg of
DataType arg1 arg2 -> DataType (modify arg1) arg2
, , , . - -
\a b c -> f b a c
c , :
\a b -> f b a
, ,
flip f a b = f b a
flip f
( , flip Prelude).
, , $. , -
\a b c -> f a $ g b $ h c
:
\a b c -> (f a . g b . h) c
c
\a b -> f a . g b . h
, $ . .
, , , , , .