J: 명사

J: 명사

J 언어의 명사(nouns) 분류와 배열(array)의 개념을 설명해요. 수치·문자·기호와 개방·박스, 그리고 다양한 계급(rank)의 배열을 다뤄요.

출처: 문서

본문

명사는 독립적인 세 가지 방식으로 분류돼요: 수치(numeric) 또는 문자(literal) 또는 기호(symbol); 개방(open) 또는 박스(boxed); 다양한 계급(rank)의 배열(array). 어떤 배열의 원자(atoms)든 단일 클래스에 속해야 해요: 수치, 문자, 기호, 또는 박스. 계급 0, 1, 2의 배열은 각각 원자(atom), 목록(list), 표(table)이라고도 하며, 수학에서는 스칼라(scalar), 벡터(vector), 행렬(matrix)이라고 해요. 수와 문자는 I부에서 설명한 대로 표현되고, 기호는 동사 s: 아래에서 설명돼요.

배열 (Arrays). 2.3, _2.3j5, 'A', '+' 같은 단일 개체를 원자(atom)라고 불러요. 쉼표(comma)로 표기된 동사는 자신의 인자들을 이어 붙여 목록을 만들며, 그 형태(shape, 동사 $로 주어짐)는 결합된 원자의 수와 같아요. 예를 들어:


   $ date=: 1,7,7,6               word=: 's','a','w'
4
   |. date                        |. word
6 7 7 1                        was

위에서 쓰인 동사 |.를 역(reverse)이라고 불러요. 구(phrase) s$b는 목록 b로부터 형태 s의 배열을 만들어 내요. 예를 들어:


   (3,4) $ date,1,8,6,7,1,9,1,7
1 7 7 6
1 8 6 7
1 9 1 7

   table=: 2 3$ word,'bat'
   table                         $table
saw                           2 3
bat

명사 형태에 있는 원자의 수를 그 계급(rank)이라고 불러요. 형태의 각 위치를 배열의 축(axis)이라고 하며, 축은 인덱스 0, 1, 2 등으로 가리켜요. 예를 들어, table의 축 0의 길이는 2이고 축 1의 길이는 3이에요.

배열 b의 마지막 k개 축은 b의 계급-k 셀(rank-k cells) 또는 k-셀을 결정해요. 형태 벡터의 나머지 부분을 계급 k의 셀들에 대한 b의 프레임(frame)이라고 불러요. $c가 2 3 4 5라면, c는 계급 2의 셀들에 대해 프레임 2 3을, 0-셀(원자)에 대해 프레임 2 3 4 5를, 4-셀에 대해 빈 프레임을 가져요. 만약:


   ] b=:2 3 4 $ 'abcdefghijklmnopqrstuvwx'
abcd
efgh
ijkl

mnop
qrst
uvwx

그러면 목록 abcdb의 1-셀이고, 각 문자는 0-셀이에요.

b의 계급보다 하나 작은 계급의 셀을 b의 항목(item)이라고 불러요. 원자는 항목이 하나뿐이며, 그것은 자기 자신이에요. 예를 들어, 동사 from({로 표기)은 오른쪽 인자에서 항목을 선택해요:


   0{b                 1{b                 0{0{b
abcd                mnop                abcd
efgh                qrst
ijkl                uvwx

   2 1{0{b             1{2{0{b             0{3
ijkl                j                   3
efgh

또한 동사 grade(/:로 표기)는 항목을 "어휘적(lexical)" 순서로 가져오는 {용 인덱스를 제공해요. 따라서:


   g=: /: n=: 4 3$3 1 4 2 7 9 3 2 0
   n                   g                   g{n
3 1 4               1 0 3 2             2 7 9
2 7 9                                   3 1 4
3 2 0                                   3 1 4
3 1 4                                   3 2 0

음수, 예컨대 _2-셀과 _1-셀(항목)은, 프레임의 길이가 숫자의 크기가 나타내는 길이인 셀들을 가리키는 데도 사용돼요. 예를 들어, 목록 abcdb의 _2-셀로도 1-셀로도 가리킬 수 있어요.

개방과 박스 (Open and Boxed). 지금까지 논의한 명사는 개방(open)이라고 불러요. 박스 동사(box, <로 표기)로 만들어진 박스 명사와 구별하기 위해서예요. 박스의 결과는 원자이며, 박스 명사는 상자 안에 표시돼요. 박스는 어떤 배열(예: 단어를 나타내는 문자 목록)도 단일 개체, 즉 원자처럼 취급할 수 있게 해줘요. 따라서:


   words=:(<'I'),(<'was'),(<'it')
   letters=: 'I was it'
   $words                        $letters
3                             8

   |. words                      |. letters
+--+---+-+                    ti saw I
|it|was|I|
+--+---+-+
   2 3$words,|.words
+--+---+--+
|I |was|it|
+--+---+--+
|it|was|I |
+--+---+--+

더 알아보기 (Learn more)

출처: A. Nouns