2010-05-28 4 views
0

저는 종종 이런 종류의 코드 변환 (또는 수학적 변환)을 교차합니다. (파이썬 예,하지만 모든 언어에 적용됩니다.)이 기호 코드 변환이란 무엇입니까?

내가

def f(x): 
    return x 

내가 다른 일에 사용하는 기능을 이동했습니다.

def g(x): 
    return f(x)*f(x) 

print g(2) 

4

에 이르게하지만 기능 종속성을 제거하려면, 내가

def g(f): 
    return f*f 

print g(f(2)) 

에 함수 g을 변경 4에 이르게 너무

당신이 전화를 어떻게 함수의 종류를 국부적으로 스칼라로 바꾸는 변형?

답변

0

구체적인 용어가 확실하지 않습니다.

일반적으로 함수 프로그래밍에 대해서는 일반적으로 스칼라 인수를 전달하고 함수를 인수로 전달하는 것 사이에 구분이 없습니다.

첫 번째 예제에서 나는 여전히 g(f(2))을 호출 할 수 있으며 f(f(2))*f(f(2))을 계산해야합니다. (f(x)부터는 ID 변환입니다.) 또한 4로 답할 것입니다.

+0

예 그렇지만 f (x)가 시간 소모적 인 경우 (여기서는 해당되지 않음) 두 번째 경우의 g (f (2))는 첫 번째 경우의 g (2)의 두 배입니다. 이 종류의 코드 최적화에 대한 이름을 찾고 있습니다. – user352966

+0

아, 무슨 뜻인지 알 겠어. 어쩌면 Memoization (http://en.wikipedia.org/wiki/Memoization)이라는 용어를 사용하면됩니까? 나도 기대/컴파일러 및/또는 실행 시간이 유형의 최적화를 보일 것입니다 바랍니다. – Paolo

+0

는 패턴의 "최적화"부분에 대답 링크에 대한 감사합니다,하지만 난 더 "수학"이라는 용어를 찾고 있었다 : 또 다른 예를하기는 ODE 정의 수 있었다 :에 : Y '(t) = y (t)^2; y는 함수입니다. 방정식은 다시 쓸 수 있습니다 : f (t) = y (t)^2; 해결하려면 다음과 같이 새 함수를 작성하십시오. f2 (y, t) -> y^2; 여기서 y는 실수입니다. g (x)를 사용한 것과 정확히 같은 과정으로 f를 f2로 변형했습니다. "함수의 스칼라화"와 같은 것이 의미가 있습니다. 불행히도 그렇지 않습니다. – user352966

관련 문제