J에는이 작업과 관련 작업이 내장 된 ^:
('power')가 있습니다./같이
v^:(<n) initial_value
:
>:@*:^:(<1+4) 2
2 5 26 677 458330
이 재사용 가능한 동사 만들려면 그 오른쪽 인수가 박스 번호 (또는 숫자) 인 경우 당신이 찾고있는 전원의 특정 다양한입니다 (n
통해 추상화와 초기 값)
vv =: >:@*:@]^:(<@>:@[)
4 vv 2
2 5 26 677 458330
n
이 초기 값 및,545,432 통해 추출 재사용 부사 (만들려면 10) :
V =: (@]) (^:(<@>:@[))
4 >:@*: V 2
2 5 26 677 458330
또한 ^:
에는 다른 맛이 있습니다. 예를 들어, 오른 쪽 인수가 박스 화되지 않은 숫자 (또는 숫자) 인 경우 중간 값 벡터를 작성하는 대신 N 번 함수를 적용하고 최종 값을 생성합니다.
또는 오른쪽 인수가 무한 경우 해당 고정 소수점에 함수가 적용됩니다. 또는이 두 가지 관측치를 결합하면 오른쪽 인수가 박스형이고 무한대이면 고정 소수점에 함수를 적용하여 중간 값의 벡터를 구축 할 수 있습니다. 그리고 다른 많은 멋진 트릭.
PS : 올바르게 입력을 생성한다 >:@*:
같이 @
를 사용 *:
함수로 함수를 구성 >:
제곱을 더한. @
때문에
는
>:
개별적 후자 동사 (증가)이 호출된다
#y
회
*:
각각의 출력을 전달하는 조립 라인처럼 행동 정의된다.
@
("at") 대신
@:
("atop")을 사용하면 더 효율적으로 동일한 결과를 얻을 수 있습니다.작곡 연산자
,
@:
더 조립 라인보다 호퍼 같다 : 완전히
*:
마무리 처리에 함께 모든 결과를 수집 기다린 한번에
>:
로 전달.
J의 배열 지향 특성을 감안할 때, 경험 법칙은 "큰 생각"입니다. 즉, 각 프리미티브가 최대한 많은 데이터를 보도록하고 해석기가 세부 사항을 관리하게하십시오. J를 배우는 동안 뉘앙스를 다룰 때까지 블랭킷 규칙으로 "@ 대신 @ 사용"을 채택 할 가치가 있습니다.
+1. 고맙습니다. 당신이 "이것의 많은 변이"를 말할 때, 기억할 수있는 몇 가지 다른 예를 들려 주시겠습니까? – Dick
append (' 'y; v> {: y' '또는''y; ~ v> {. y ') 대신 꼬리 (''y, ~ v {. y'') ')와 많은, 더 많은. 그것은 진짜로 달라집니다. ... – Eelvex