J: 계급

J: 계급 (Intro 20)

J 입문 20장에서는 명사의 형태(shape), 개수(tally), 계급(rank)과, 계급 접속사(rank conjunction) "가 인자의 각 k-셀(cell)에 함수를 적용하는 방법을 설명해요.

출처: 문서

본문

명사의 형태($), 개수(#), 계급(#@$)은, 2년을 연간 4분기·월 3개월로 나눈 보고서로 해석될 수 있는 명사 report로 설명돼요:


   ]report=: i. 2 4 3
 0  1  2
 3  4  5
 6  7  8
 9 10 11

12 13 14
15 16 17
18 19 20
21 22 23

   ($ ; # ; #@$) report        Shape, Number of items, Rank
+-----+-+-+
|2 4 3|2|3|
+-----+-+-+

마지막 k개 축이 명사의 k-셀(k-cell)을 결정해요. report의 0-셀은 원자(atom, 가령 4와 14)이고, 1-셀은 세 원소 분기 보고서(quarterly reports)이며, 2-셀(또는 주요 셀 major cells 또는 항목 items)은 두 개의 4×3 연차 보고서예요.

계급 접속사(rank conjunction) "는 구 f"k에서 함수 f를 그 인자의 각 k-셀에 적용하는 데 사용돼요. 예를 들어:


   ,report
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

   ,"2 report
 0  1  2  3  4  5  6  7  8  9 10 11
12 13 14 15 16 17 18 19 20 21 22 23

   <@i. s=: 2 5
+---------+
|0 1 2 3 4|
|5 6 7 8 9|
+---------+
   <@i."0 s
+---+---------+
|0 1|0 1 2 3 4|
+---+---------+

이항의 왼쪽과 오른쪽 계급이 모두 지정될 수 있어요. 따라서:


   10 11 12 (,"0 1 ; ,"1 1 ; ,"1) 0 1 2
+--------+--------------+--------------+
|10 0 1 2|10 11 12 0 1 2|10 11 12 0 1 2|
|11 0 1 2|              |              |
|12 0 1 2|              |              |
+--------+--------------+--------------+

기본 특성 부사(basic characteristics adverb) b.은 함수(또는 그것을 정의하는 표현)를 그 계급에 대해 분석할 때 매우 유용해요. 예를 들어:


   (# b. 0) ; (+/\ b. 0) ; (+/\ % #) b. 0
+-----+-----+-----+
|_ 1 _|_ 0 _|_ _ _|
+-----+-----+-----+

연습문제 (Exercises)

20.1

계급 접속사가 만든 단항 함수들의 다음 사용 결과를 관찰하고 논평해 보세요:


a=: i. 3 4 5
<"0 a
<"1 a
<"2 a
<"3 a
< a
<"_1 a
<"_2 a
mean=: +/ % #
mean a
mean"1 a
mean"2 a

답: <"k는 계급 k의 각 셀에 <을 적용하며, <"(#$a) a<a와 동등합니다. 게다가 k의 음수 값은, 실질적으로 '인자 a의 계급보다 |k 작은' 보완적 계급(complementary rank)을 지정합니다.

20.2

다음 실험의 결과를 사용해 접속사 @(Atop)과 @:(At) 사이의 관계를 말하고, 그 결론을 사전 정의와 비교해 보세요:


(g=: <"2) a=: i. 3 4 5
|. @: g a
|. @ g a
|: @: (<"1) a
|: @ (<"1) a

답: 함수 |. @: g의 계급은 그 자체로 무한하며, 따라서 |.은 g a의 전체 목록 결과에 적용되어 그것을 뒤집습니다. 반면 함수 f @ g는 g의 계급을 물려받으며, 따라서 |.은 g가 만든 원자들 각각에 개별 적용되어 효과가 없습니다.

20.3

다음 실험의 결과를 사용해 이항에서 계급 접속사의 사용에 대해 논평해 보세요:


b=: 'ABC'
c=: 3 5 $ 'abcdefghijklmno'
c
b,c
b ,"0 1 c
b ,"1 1 c
b ,"1 c

더 알아보기 (Learn more)

출처: Intro 20. Rank