J: 결합 접속사

J: 결합 접속사 (Intro 7)

J 입문 7장에서는 결합 접속사(bond conjunction) &가 인자를 이항에 결합해 단항 함수군을 만드는 방법을 설명해요.

출처: 문서

본문

^ 같은 이항은 단항 함수의 한 가족(family)을 제공하는 데 사용될 수 있어요:


   ]b=: i.7
0 1 2 3 4 5 6

   b^2                        Squares
0 1 4 9 16 25 36

   b^3                        Cubes
0 1 8 27 64 125 216

   b^0.5                      Square roots
0 1 1.41421 1.73205 2 2.23607 2.44949

결합 접속사(bond conjunction) &는 대응하는 정의된 동사를 만들기 위해 인자를 이항에 결합(bind)하는 데 사용될 수 있어요. 예를 들어:


   square=: ^&2               Square (power and 2)
   square b
0 1 4 9 16 25 36

   (sqrt=: ^&0.5) b           Square root function
0 1 1.41421 1.73205 2 2.23607 2.44949

왼쪽 인자도 비슷하게 결합될 수 있어요:


   Log=: 10&^.                Base-10 logarithm
   Log 2 4 6 8 10 100 1000
0.30103 0.60206 0.778151 0.90309 1 2 3

이런 정의된 동사들은 물론 포크에 사용될 수 있어요. 예를 들어:


   in29=: 2&< *. <&9          Interval test
   in29 0 1 2 5 8 13 21
0 0 0 1 1 0 0

   IN29=: in29 # ]            Interval selection
   IN29 0 1 2 5 8 13 21
5 8

   LOE=: <+.=
   5 LOE 3 4 5 6 7
0 0 1 1 1

   integertest=: <. = ]       The monad <. is floor
   integertest 0 0.5 1 1.5 2 2.5 3
1 0 1 0 1 0 1

   int=: integertest
   int (i.13)%3
1 0 0 1 0 0 1 0 0 1 0 0 1

연습문제 (Exercises)

7.1

프로그램 IN29에서 동사 #이 이항으로 사용돼요. (j=: 3 0 4 0 1) # i.5 같은 표현을 입력해 #의 동작을 알아내고, #j#i.5의 결과를 말해 보세요. (또한 1j1#i.5을 시도해 보세요.)

답: +/j

7.2

오른쪽의 답을 가리고 다음 프로그램들을 목록에 적용해 각각의 목적을 알아내고(영어로 말해) 보세요:


   test1=: >&10 *. <&100      Test if in 10 to 100
   int=: ] = <.               Test if integer
   test2=: int *. test1       Test if integer and in 10 to 100
   test3=: int +. test1       Test if integer or in 10 to 100
   sel=: test2 # ]            Select integers in 10 to 100

7.3

앞 연습문제의 왼쪽 프로그램 정의를 가리고, 명시된 효과를 위한 새 프로그램을 만들어 보세요.

7.4

연습문제 6.4-5에서의 고정(fix) 부사의 사용을 검토하고, 연습문제 7.2의 프로그램들에 대한 사용을 실험해 보세요.

더 알아보기 (Learn more)

출처: Intro 7. Bond Conjunction