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의 프로그램들에 대한 사용을 실험해 보세요.