J: 동사
J: 동사
J 언어의 동사(verbs) 개념을 설명해요. 단항(monad)과 이항(dyad), 동사의 계급(rank), 일치(agreement) 규칙을 다뤄요.
출처: 문서
본문
단항과 이항 (Monads and Dyads). 동사는 두 정의가 있어요. 하나는 단항 경우(인자 하나), 하나는 이항 경우(인자 둘)에 대한 것이에요. 동사 앞에 적절한 왼쪽 인자가 있으면 이항 정의가 적용되는데, 여기서 왼쪽 인자는 접속사의 인자가 아닌 어떤 명사든 됩니다. 그렇지 않으면 단항 정의가 적용돼요.
동사의 단항 경우를 단항(monad)이라고도 하며, 구(phrase) %4에서 쓰인 단항 %와 3%4에서 쓰인 이항 %를 말해요. 둘 중 하나가 또는 둘 다 빈 영역(empty domains)을 가질 수 있어요.
동사의 계급 (Ranks of Verbs). 동사 계급의 개념은 명사 계급과 밀접한 관련이 있어요: 계급 k의 동사는 인자의 각 k-셀에 적용돼요. 예를 들어(A절의 배열 b를 사용):
,b
abcdefghijklmnopqrstuvwx
,"2 b ,"_1 b
abcdefghijkl abcdefghijkl
mnopqrstuvwx mnopqrstuvwx
동사 ravel(,로 표기)은 전체 인자에 적용되므로, 그 계급은 무제한(unbounded)이라고 해요. 구 ,"2에서 쓰인 계급 접속사(rank conjunction) "는, 각 2-셀을 ravel하여 형태 2 x 12의 결과를 만드는 계급 2의 관련 동사를 만들어 내요.
결과의 형태는 (동사가 적용되는 셀들에 대한) 프레임과, 개별 셀들에 동사를 적용해서 만들어진 형태를 이어 붙인 것이에요.
일반적으로 이 개별 형태들은 일치하지만, 그렇지 않으면 낮은 계급의 어떤 것에든 선행 단위 축(leading unit axes)을 도입해 먼저 공통 계급으로 끌어올린 다음, 적절한 채움 요소(fill element)로 패딩하여 공통 형태로 만드는데, 채움 요소는 문자 배열이면 공백, 수치 배열이면 0, 박스 배열이면 박스된 빈 목록이에요. 예를 들어:
i."0 s=: 2 3 4 >'I';'was';'here'
0 1 0 0 I
0 1 2 0 was
0 1 2 3 here
동사의 이항 경우는 두 계급을 가지며, 왼쪽과 오른쪽 인자를 각각 다스려요. 예를 들어:
p=: 'abc'
q=: 3 5$'wake read lamp '
p,"0 1 q
awake
bread
clamp
마지막으로, 각 동사는 세 가지 내재 계급(intrinsic ranks)을 가져요: 단항, 좌, 우. 어떤 동사의 정의든 내재 계급의 셀들에 대한 동작만 지정하면 되고, 더 높은 계급의 인자로의 확장은 체계적으로 일어나요. 동사의 계급은 적용되는 셀들의 계급에 대한 상한만을 정하며, 그 영역은 더 낮은 계급의 인자도 포함할 수 있어요. 예를 들어, 행렬역(Matrix Inverse, %.)은 단항 계급 2이지만, 벡터의 경우는 단일 열 행렬로 취급해요.
일치 (Agreement). 구 p v q에서 v의 인자들은, 한 프레임이 다른 프레임의 접두사(prefix)여야 한다는 의미에서 일치(agree)해야 해요. 위의 p,"0 1 q와 다음 예들에서처럼요:
p ,"1 1 q 3 4 5 * i. 3 4
abcwake 0 3 6 9
abcread 16 20 24 28
abclamp 40 45 50 55
(i.3 4) * 3 4 5
0 3 6 9
16 20 24 28
40 45 50 55
프레임이 0을 포함하면, 동사는 채움(fills)의 셀에 적용돼요. 예를 들어:
($ #"2 i. 1 0 3 4);($ 2 3 %"1 i. 0 2)
+---+---+
|1 0|0 2|
+---+---+
($ $"2 i. 1 0 3 4);($ 2 3 %/"1 i. 0 4)
+-----+-----+
|1 0 2|0 2 4|
+-----+-----+
더 알아보기 (Learn more)
출처: B. Verbs