2012-08-16 3 views
3

저는 J에 대한 완전한 초보자입니다. 함수를 작성하는 첫 번째 시도는 totient 함수와 같습니다. 어떤 숫자 인 i.num이라고 가정하는 배열을 취합니다. 그런 다음 배열의 집계와 일치하는 요소의 수를 계산합니다.J 함수가 작동하지 않습니다.

I는 다음과 같이 수동으로 할 경우

작동
numbers =: i.7 
#(1=(#numbers)+./numbers)#numbers 

. 결과는 6입니다.

그래서 이것을 일반적인 기능으로 바꾸고 싶습니다.

Tot =: monad :'(1=(#x)+./x)#x' 
Tot i.11 

이것은 실패하고 x 값 오류가 발생합니다. 나는 이유를 모른다.

답변

2

모나드의 변수는 y하지 x해야한다 :

Tot =: monad :'(1=(#y)+./y)#y' 

x은 다이 애드의 왼쪽 인수입니다.

+0

오. 나는 그들이 교환 할 수 있다고 생각했다. –

+0

예, "y"가 아니라 "x"가 기본 "변수"가 아닌 "이상한"것입니다. 어쩌면 역사적인 이유로. [Point 5 here] (http://www.jsoftware.com/help/dictionary/d310n.htm)는 인수 이름을 밝힐 수 있습니다 :) – Eelvex

+0

이전 버전의 J에서는'y'와'x'는'y .'과'x.', 인자에 대한 예약 된 "프리미티브"(인자로 전달 된 동사를 나타내는 다른 인자들과 함께). – MPelletier

관련 문제