2013-06-14 2 views
1

이것은 매우 간단한 질문이지만 어디서나 답을 찾을 수없는 것 같습니다 - 숫자 목록을 목록 값의 합계에 매핑하는 것 (예 : 1 2 2 -> 이유는 - 0.2 0.4 0.4), 당신은 기능J의 함수 구성

func =: %+/ 

그러나 다만 numbers이 작동하지 않는 번호의 목록입니다 %+/ numbers를 작성을 작성할 수 있습니다? 왜 함수 구성 주위에 괄호를 써야합니까?

답변

1

는 J는 오른쪽에서 왼쪽으로의 모든 식을 계산 (이 괄호의 식을 평가하는 경우,이 - 및 다음가 좌측으로 계속 - 왼쪽에서 오른쪽).

예 :

1 - 2 - 3 - 4 - 5 
3     NB. because it's: 1 - (2 - (3 - (4 - 5))) 

%+/ 1 2 3 
0.166667   NB. because it's: % (+/ 1 2 3) -> % (1 + (2 + 3)) 

(%+)/ 1 2 3 
1.5    NB. because it's: 1 (%+) (2 (%+) 3) 

또한 부사 분할하지 않는 것이 있습니다. 즉 /은 단독으로 사용할 수 없습니다.

1

두 가지 규칙이 있습니다. 1. J의 표현식은 연관성을 나타내지 않습니다. 2. J에 동사가 표시되면 암시 적으로 동사가 추가됩니다. 이 괄호 본다 않는

%+/ 1 2 2 = % (+/ 1 2 2)!= (%+/) 1 2 2 and 
func 1 2 2 = (%+/) 1 2 2 = 1 2 2 % (+/1 2 2) = 0.2 0.4 0.4, which is a hook.