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

더 알아보기 (Learn more)

출처: Intro 8. Atop Conjunction