[数学问题]如何得到组合数列表

     ∇ ssub←{                            
[1]        ∨/⍺=0 1:((⍺!⍵),⍺)⍴⍳⍵          
[2]        X←(⍳N)∘.>⍨,1↑⍉T←1+(⍺-1)∇ N←⍵-1
[3]        ((,X)/(⍴,X)⍴⍳N),(+/X)⌿T       
[4]    }                                 
     ∇ 

      7 ssub 12
1 2 3 4  5  6  7
1 2 3 4  5  6  8
1 2 3 4  5  7  8
1 2 3 4  6  7  8
1 2 3 5  6  7  8
1 2 4 5  6  7  8
...
1 7 8 9 10 11 12
2 7 8 9 10 11 12
3 7 8 9 10 11 12
4 7 8 9 10 11 12
5 7 8 9 10 11 12
6 7 8 9 10 11 12
      ⍴ 7 ssub 12
792 7
      7!12
792

强行写成一行也不是不行

      3{({((,X)/(⍴,X)⍴⍳N),(+/X←(,1↑⍉T)∘.>⍳N←I+≢⍉⍵)⌿T←1+⍵}⍣(⍺-1))⍪⍳1+I←⍵-⍺}5
1 2 3
1 2 4
1 3 4
2 3 4
1 2 5
1 3 5
2 3 5
1 4 5
2 4 5
3 4 5

用 April

CL-USER> (setf (symbol-function 'ssub) (april:april "{({((,X)/(⍴,X)⍴⍳N),(+/X←(T[;1])∘.>⍳N←I+≢⍉⍵)⌿T←1+⍵}⍣(⍺-1))⍪⍳1+I←⍵-⍺}"))
#<COMPILED-LEXICAL-CLOSURE #x30200158614F>
CL-USER> (ssub 5 3)
#2A((1 2 3)
    (1 2 4)
    (1 3 4)
    (2 3 4)
    (1 2 5)
    (1 3 5)
    (2 3 5)
    (1 4 5)
    (2 4 5)
    (3 4 5))