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에서 요소 하나를 만듭니다.

더 알아보기 (Learn more)

출처: Intro 2. Ambivalence