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 y와 g x h y로 단순화해요.
트레인 N g h(명사 뒤에 두 동사)는 N"_ g h와 동등해요. 훅과 포크의 계급(rank)은 무한대예요.
접속사와 명사 또는 동사를 한 요소로 하는 이-요소 트레인은 부사를 만들어 내요. 예를 들어, &.>는 "각(each)"이라 부를 수 있는 부사를 만들고, 부사 bc=:<"는 "셀 박스(box cells)"라고 부를 수 있는데, 예를 들어 0 bc x는 x의 원자들을 박스할 것이기 때문이에요.
마지막으로, 두 부사의 트레인은 부사를 만들고, (암묵적으로) 어떤 수의 부사 트레인도 부사를 만들어 내요. 예를 들어, /\는 "삽입 스캔(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