J: 양가성
J: 양가성 (Intro 2)
J 입문 2장에서는 함수가 문맥에 따라 단항 또는 이항으로 달리 적용되는 양가성(ambivalence)을 설명해요.
출처: 문서
본문
오른쪽의 주석을 가리고 자신의 주석을 달아 보세요.
7-5 The function in the sentence 7-5 applies to two
2 arguments to perform subtraction, but in the
-5 sentence -5 it applies to a single argument to
_5 perform negation.
Adopting from chemistry the term valence, we
say that the symbol - is ambivalent, its effective
7%5 binding power being determined by context.
1.4
%5 The ambivalence of - is familiar in arithmetic;
0.2 it is here extended to other functions.
3^2
9
^2 Exponential (that is, 2.71828^2)
7.38906
a=: i. 5 The function integer or integer list
a
0 1 2 3 4 List or vector
a i. 3 1 The function index or index of
3 1
b=: 'Canada' Enclosing quotes denote literal characters
b i. 'da'
4 1
$ a Shape function
5
3 4 $ a Reshape function
0 1 2 3 Table or matrix
4 0 1 2
3 4 0 1
3 4 $ b
Cana
daCa
nada
%a Functions apply to lists
_ 1 0.5 0.333333 0.25 The symbol _ alone denotes infinity
문장 7-5의 함수는 두 인자에 적용되어 뺄셈을 수행하지만, 문장 -5에서는 단일 인자에 적용되어 부정(negation)을 수행해요. 화학에서 가져온 용어 가치(valence)를 채택하여, 기호 -는 양가적(ambivalent)이며 그 유효 결합력(binding power)이 문맥에 의해 결정된다고 말해요. -의 양가성은 산술에서 익숙하며, 여기서는 다른 함수들로 확장돼요.
연습문제 (Exercises)
2.1
다음 문장들(그리고 아마 다른 인자를 쓰는 관련 문장)을 입력하고, 결과를 관찰한 다음, 각 함수의 두 경우(단항과 이항)가 무엇을 하는지 말해 보세요:
a=: 3 1 4 1 5 9
b=: 'Canada'
#a
1 0 1 0 1 3 # a
1 0 1 0 1 3 # b
/: a
/: b
a /: a
a /: b
b /: a
b /: b
c=: 'can''t'
c
#c
c /: c
2.2
지금까지 사용한 함수들의 요약 표를 만들어 보세요. 그런 다음 다음 표와 비교해 보세요(불릿이 단항 경우와 이항 경우를 구분하며, Negate • Subtract처럼):
| 심볼 | 단항 • 이항 |
|---|---|
. |
|
+ |
• Add • Or |
- |
Negate • Subtract |
* |
• Times • And |
% |
Reciprocal • Divide |
^ |
Exponential • Power • Log |
< |
• Less Than • Lessor Of |
> |
• Greater Than • Greater Of |
= |
• Equals • Is (Copula) |
i. |
Integers • Index Of |
$ |
Shape • Reshape |
/ |
Grade • Sort |
# |
Number Of Items • Replicate |
2.3
적절한 표현으로 실험해 보고 연습문제 2.2의 표의 빈칸을 채워 보세요. 예를 들어 ^.10과 ^. 2.71828을 입력해 ^.의 빠진 (단항) 경우를 알아내고, %: 4, %: -4, +%: -4를 입력해 % 다음에 콜론이 붙은 경우를 알아내 보세요.
다만, 아직 이해 범위를 벗어난 문제(예: 복소수, 단항 <가 만드는 박스된 결과)에는 시간을 낭비하지 마세요. 이후 섹션을 진행한 뒤 다시 돌아오는 것이 좋을 수 있어요. 어떤 함수들의 효과는 양의 정수가 아닌 인자에 적용될 때만 분명해짐을 주목하세요: <.1 2 3 4와 <.3.4 5.2 3.6을 입력해 단항 <.의 효과를 알아내 보세요.
2.4
b=: 3.4 5.2 3.6이면 <.b는 인자 b를 가장 가까운 정수로 내림(round down)한 결과예요. 인자 b를 가장 가까운 정수로 반올림(round)하는 문장을 작성하고 테스트해 보세요.
답: <.(b+0.5) 또는 <.b+0.5 또는 <.b+1r2
2.5
2 4 3 $ i. 5을 입력해 계급 3의 배열 또는 보고서(report, 2년 동안 각 3개월씩 4분기로 나눈 것)의 예를 보세요.
2.6
?9을 반복 입력하고 함수 ?가 무엇을 하는지 말해 보세요. 그런 다음 t=: ?3 5 $ 9을 입력해 추가 실험에 쓸 표를 만드세요.
답: ?는 (의사) 난수 생성기이며, ?n은 모집단 i.n에서 요소 하나를 만듭니다.