J: 명시 정의

J: 명시 정의 (Intro 18)

J 입문 18장에서는 명시 정의 접속사(explicit definition conjunction) :로 단일 문장 스크립트나 제어 구조를 써서 동사를 정의하는 방법을 설명해요.

출처: 문서

본문

단어 형성 논의에서 실행된 예의 문장들:


   m=: '3 %: y'
   d=: 'x %: y'

은 명시 정의 접속사 :과 함께 사용되어 동사를 만들 수 있어요:


   script=: 0 : 0
3 %: y
:
x %: y
)

   roots=: 3 : script
   roots 27 4096
3 16

   4 roots 27 4096
2.27951 8

부사와 접속사도 명시적으로 정의될 수 있어요. 예를 들어:


   table=: 1 : 0
[ by ] over x/              Verbs by and over from Section 3
)

   2 3 5 ^ table 0 1 2 3
+-+----------+
| |0 1  2   3|
+-+----------+
|2|1 2  4   8|
|3|1 3  9  27|
|5|1 5 25 125|
+-+----------+

제어 구조도 사용될 수 있어요. 예를 들어:


f=: 3 : 0
if. y<0
  do. *:y
  else. %:y
end.
)

   f"0 (_4 4)
16 2


factorial=: 3 : 0
a=. 1
while. y>1
do. a=. a*y
y=. y-1 end. a
)

   factorial"0 i. 6
1 1 2 6 24 120

연습문제 (Exercises)

18.1

(동등한) 함수 roots=: 3 : script13 : script을 실험하고 표시해 보세요.

18.2

사전의 제어 구조 논의를 보고, 더 많은 동사를 정의할 때 사용해 보세요.

18.3

부사 d를 정의한 다음 ! d b=: i.7 같은 표현을 실험해 보세요:


d=: 1 : 0
+:@x
)

18.4

연습문제 14.2의 프로그램 pol을 사용해 다음 실험들을 수행하고 그 결과에 대해 논평해 보세요:


g=: 11 7 5 3 2 & pol
e=: 11 0 5 0 2 & pol
o=:  0 7 0 3 0 & pol
(g = e + o) b=: i.6
(e = e@-) b
(o = -@o@-) b

답: 함수 g는 함수 e와 o의 합입니다. 게다가 e는 우함수(even function, 그래프가 세로축에 대해 대칭)이고, o는 기함수(odd function, 원점에 대해 대칭)입니다.

18.5

2부 H절을 검토하고 스크립트를 사용해 더 많은 명시 정의를 만들어 보세요.

18.6

부사 even의 다음 명시 정의를 입력하고, 앞 연습문제에서 정의한 함수들을 사용해 제안된 실험을 수행해 보세요:


even=: 1 : 0
-:@(x f. + x f.@-)
)
ge=: g even
(e = ge) b
(e = e even) b

18.7

부사 odd를 정의하고 다음 실험에 사용해 보세요:


exp=: ^
sinh=: 5&o.
cosh=: 6&o.
(sinh = exp odd) b
(sinh = exp .: -) b            The primitive odd adverb .: -
(cosh = exp even) b
(exp = exp even + exp odd) b

18.8

다음 실험은 복소수를 포함하며, 복소수에 익숙하지 않은 사람은 어쩌면 무시하는 것이 좋아요:


sin=: 1&o.
cos=: 2&o.
(cos = ^@j. even) b
(j.@sin = ^@j. odd) b

더 알아보기 (Learn more)

출처: Intro 18. Explicit Definition