APL/J言語:シンボル関数

APL/J言語:シンボル関数
関数について、式を評価するよりも式を表示するために対応するシンボル関数を定義することができます。

   minus=: [ , '-'"_ , ]
   'a' minus 'b'
a-b

   list=: 'abcd'
   table=: 4 4$'ABCDEFGHIJKLMNOP'
   minus/list
a-b-c-d

   (minus/\list);('01'minus"0/list);(minus//.table);table
 +-------+---+-------+----+
 |a      |0-a|A      |ABCD|
 |a-b    |0-b|B-E    |EFGH|
 |a-b-c  |0-c|C-F-I  |IJKL|
 |a-b-c-d|0-d|D-G-J-M|MNOP|
 |       |   |H-K-N  |    |
 |       |1-a|L-O    |    |
 |       |1-b|P      |    |
 |       |1-c|       |    |
 |       |1-d|       |    |
 +-------+---+-------+----+
   list =: '4321'
   minus/\list
4      
4-3    
4-3-2  
4-3-2-1
   (". minus/\list) ,: (-/\4 3 2 1)
4 1 3 2
4 1 3 2

   3 (minus/\ ; minus/\.) 'abcdefg'
 +-----+-------+
 |a-b-c|d-e-f-g|
 |b-c-d|a-e-f-g|
 |c-d-e|a-b-f-g|
 |d-e-f|a-b-c-g|
 |e-f-g|a-b-c-d|
 +-----+-------+