Simplify the syntax of calling multiple functions at the same time

See my following code snippet:

In[870]:= cclPGAK227Left1
ls1 = {Length[#], Dimensions[First[#]], Tr[First[#]], 
     Det[First[#]]} & /@ cclPGAK227Left1 // Sort

Out[870]= {{{{-1, 0, 0}, {0, -1, 0}, {0, 0, -1}}}, {{{-1, 0, 
    0}, {0, -1, 0}, {0, 0, 1}}, {{-1, 0, 0}, {0, 1, 0}, {0, 
    0, -1}}, {{1, 0, 0}, {0, -1, 0}, {0, 0, -1}}}, {{{-1, 0, 0}, {0, 
    0, -1}, {0, -1, 0}}, {{-1, 0, 0}, {0, 0, 1}, {0, 1, 0}}, {{0, -1, 
    0}, {-1, 0, 0}, {0, 0, -1}}, {{0, 0, -1}, {0, -1, 0}, {-1, 0, 
    0}}, {{0, 0, 1}, {0, -1, 0}, {1, 0, 0}}, {{0, 1, 0}, {1, 0, 
    0}, {0, 0, -1}}}, {{{-1, 0, 0}, {0, 0, -1}, {0, 1, 0}}, {{-1, 0, 
    0}, {0, 0, 1}, {0, -1, 0}}, {{0, -1, 0}, {1, 0, 0}, {0, 
    0, -1}}, {{0, 0, -1}, {0, -1, 0}, {1, 0, 0}}, {{0, 0, 1}, {0, -1, 
    0}, {-1, 0, 0}}, {{0, 1, 0}, {-1, 0, 0}, {0, 0, -1}}}, {{{-1, 0, 
    0}, {0, 1, 0}, {0, 0, 1}}, {{1, 0, 0}, {0, -1, 0}, {0, 0, 
    1}}, {{1, 0, 0}, {0, 1, 0}, {0, 0, -1}}}, {{{0, -1, 0}, {-1, 0, 
    0}, {0, 0, 1}}, {{0, 0, -1}, {0, 1, 0}, {-1, 0, 0}}, {{0, 0, 
    1}, {0, 1, 0}, {1, 0, 0}}, {{0, 1, 0}, {1, 0, 0}, {0, 0, 1}}, {{1,
     0, 0}, {0, 0, -1}, {0, -1, 0}}, {{1, 0, 0}, {0, 0, 1}, {0, 1, 
    0}}}, {{{0, -1, 0}, {0, 0, -1}, {-1, 0, 0}}, {{0, -1, 0}, {0, 0, 
    1}, {1, 0, 0}}, {{0, 0, -1}, {-1, 0, 0}, {0, -1, 0}}, {{0, 
    0, -1}, {1, 0, 0}, {0, 1, 0}}, {{0, 0, 1}, {-1, 0, 0}, {0, 1, 
    0}}, {{0, 0, 1}, {1, 0, 0}, {0, -1, 0}}, {{0, 1, 0}, {0, 
    0, -1}, {1, 0, 0}}, {{0, 1, 0}, {0, 0, 1}, {-1, 0, 0}}}, {{{0, -1,
     0}, {0, 0, -1}, {1, 0, 0}}, {{0, -1, 0}, {0, 0, 1}, {-1, 0, 
    0}}, {{0, 0, -1}, {-1, 0, 0}, {0, 1, 0}}, {{0, 0, -1}, {1, 0, 
    0}, {0, -1, 0}}, {{0, 0, 1}, {-1, 0, 0}, {0, -1, 0}}, {{0, 0, 
    1}, {1, 0, 0}, {0, 1, 0}}, {{0, 1, 0}, {0, 0, -1}, {-1, 0, 
    0}}, {{0, 1, 0}, {0, 0, 1}, {1, 0, 0}}}, {{{0, -1, 0}, {1, 0, 
    0}, {0, 0, 1}}, {{0, 0, -1}, {0, 1, 0}, {1, 0, 0}}, {{0, 0, 
    1}, {0, 1, 0}, {-1, 0, 0}}, {{0, 1, 0}, {-1, 0, 0}, {0, 0, 
    1}}, {{1, 0, 0}, {0, 0, -1}, {0, 1, 0}}, {{1, 0, 0}, {0, 0, 
    1}, {0, -1, 0}}}, {{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}}}

Out[871]= {{1, {3, 3}, -3, -1}, {1, {3, 3}, 3, 1}, {3, {3, 3}, -1, 
  1}, {3, {3, 3}, 1, -1}, {6, {3, 3}, -1, -1}, {6, {3, 3}, -1, 
  1}, {6, {3, 3}, 1, -1}, {6, {3, 3}, 1, 1}, {8, {3, 3}, 
  0, -1}, {8, {3, 3}, 0, 1}}

My code looks bloated and clumsy. Are there some methods to simplify the syntax of calling multiple functions at the same time?

Regards,
Zhao

One can use Through to apply several functions to the same argument. But if that is simplier in your case is a matter of taste.

Through[{Length, Dimensions@*First, Tr@*First, Det@*First}[#]] & /@ cclPGAK227Left1 // Sort

As you can see, First is still a common factor in these commands. So, how to further simplify, in order to use this command only once?

I think this works:

cclPGAK227Left1 // 
 Map[(Prepend[
     OperatorApplied[Composition][First] /@ {Dimensions, Tr, Det}, 
     Length])/*Through]

but it is hard ot read

Yes. It works. Thank you for your tips.

In[26]:= 
ls1 = {Length[#], Dimensions[First[#]], Tr[First[#]], 
      Det[First[#]]} & /@ cclPGAK227Left1 // Sort;
cclPGAK227Left1 // 
  Map[(Prepend[
      OperatorApplied[Composition][First] /@ {Dimensions, Tr, Det}, 
      Length])/*Through] // Sort
% == ls1


Out[27]= {{1, {3, 3}, -3, -1}, {1, {3, 3}, 3, 1}, {3, {3, 3}, -1, 
  1}, {3, {3, 3}, 1, -1}, {6, {3, 3}, -1, -1}, {6, {3, 3}, -1, 
  1}, {6, {3, 3}, 1, -1}, {6, {3, 3}, 1, 1}, {8, {3, 3}, 
  0, -1}, {8, {3, 3}, 0, 1}}

Out[28]= True