J: 트레인

J: 트레인

J 언어의 트레인(train) 개념을 설명해요. 훅(hook), 포크(fork), 뚜껑 달린 포크(capped fork), 그리고 부사·접속사 트레인을 다뤄요.

출처: 문서

본문

(+ */) 같은 고립된 수열로, "정상" 파싱 규칙이 단일 품사로 해석하지 못하는 것을 트레인(train)이라고 불러요. 이는 아래 설명된 대로 더 해석될 수 있어요.

두 개 또는 세 개의 동사로 된 트레인은 동사를 만들어 내며, (반복 해석으로) 어떤 길이의 동사 트레인도 동사를 만들어 내요. 예를 들어, 트레인 +-*%+-*%^+(-*%)+-(*%^)와 동등해요. 이 생성은 다음 도식으로 정의돼요:


         HOOK                FORK             CAPPED FORK

      g       g           g        g            g     g
     / \     / \         / \      / \           |     |
    y   h   x   h       f   h    f   h          h     h
        |       |       |   |   / \ / \         |    / \
        y       y       y   y   x y x y         y   x   y

예를 들어, 5(+*-)3(5+3)*(5-3)이에요. f가 뚜껑(cap, [:)이면 뚜껑 달린 가지가 포크를 g h yg x h y로 단순화해요.

트레인 N g h(명사 뒤에 두 동사)는 N"_ g h와 동등해요. 훅과 포크의 계급(rank)은 무한대예요.

접속사와 명사 또는 동사를 한 요소로 하는 이-요소 트레인은 부사를 만들어 내요. 예를 들어, &.>는 "각(each)"이라 부를 수 있는 부사를 만들고, 부사 bc=:<"는 "셀 박스(box cells)"라고 부를 수 있는데, 예를 들어 0 bc xx의 원자들을 박스할 것이기 때문이에요.

마지막으로, 두 부사의 트레인은 부사를 만들고, (암묵적으로) 어떤 수의 부사 트레인도 부사를 만들어 내요. 예를 들어, /\는 "삽입 스캔(insert scan)" 부사이고, ~/~는 "교환 표(commuted table)"예요. 예를 들어:


   is=:\
   + is 1 2 3 4 5
1 3 6 10 15

   ct=: ~/~
   - ct 1 2 3
 0  1 2
_1  0 1
_2 _1 0

더 알아보기 (Learn more)

출처: F. Trains