J: 위에 놓기(Atop) 접속사
J: 위에 놓기(Atop) 접속사 (Intro 8)
J 입문 8장에서는 접속사(atop conjunction) @가 두 동사를 결합해 첫 동사를 두 번째 동사 위에 적용하는 동사를 만드는 방법을 설명해요.
출처: 문서
본문
접속사 @은 두 동사에 적용되어, 첫 동사를 두 번째 동사 위에(atop) 적용하는 것과 동등한 동사를 만들어요. 예를 들어:
TriplePowersOf2=: (3&*)@(2&^)
TriplePowersOf2 0 1 2 3 4
3 6 12 24 48
CubeOfDiff=: (^&3)@-
3 4 5 6 CubeOfDiff 6 5 4 3
_27 _1 1 27
f=: ^@- The rightmost function is first applied dyadically
if possible; the second is applied monadically.
5 f 3
7.38906
f 3
0.0497871
g=: -@^
5 g 3
_125
g 3
_20.0855
가장 오른쪽 함수가 가능하면 먼저 이항으로 적용되고, 두 번째는 단항으로 적용돼요. 접속사는 부사처럼 동사보다 먼저 실행돼요. 접속사나 부사의 왼쪽 인자는 그 앞에 있는 전체 동사 구예요. 따라서 위 정의들 중 일부(전부는 아님) 괄호는 생략될 수 있어요. 예를 들어:
COD=: ^&3@-
3 4 5 6 COD 6 5 4 3
_27 _1 1 27
TPO2=: 3&*@(2&^)
TPO2 0 1 2 3 4
3 6 12 24 48
tpo2=: 3&*@2&^ An error because the conjunction @ is defined
|domain error only for a verb right argument
| tpo2=: 3&*@2&^
tpo2=: 3&*@2&^은 접속사 @이 오직 동사 오른쪽 인자에 대해서만 정의되므로 오류(domain error)예요.
연습문제 (Exercises)
8.1
오른쪽의 주석을 가리고 프로그램들의 효과를 말해 보세요. 그런 다음 프로그램을 가리고 영어 진술에서 다시 작성해 보세요:
mc=: (+/%#)@|: Means of columns of table
f=: +/@(^&2) Sum of squares of list
g=: %:@f Geometric length of list
h=:{&' *'@(</) Map of comparison (dyad)
k=: i. h i. Map (monad)
map=: {&'+-* %#$' 7-character map
MAP=: map@(6&<.) Extended domain of map
add=: MAP@ (i.+/i.) Addition table map