program tip

멱등 함수는 순수 함수와 동일합니까?

radiobox 2021. 1. 8. 08:04
반응형

멱등 함수는 순수 함수와 동일합니까?


Wikipedia의 멱등성에 대한 설명을 읽었습니다. 함수의 출력이 입력에 의해 결정된다는 것을 알고 있습니다. 그러나 나는 아주 유사한 개념을 들었다는 것을 기억합니다. 순수 함수입니다. Google에서 검색했지만 차이점을 찾을 수 없습니다 ...

동등합니까?


멱등 함수는 멱등 부작용을 일으킬 수 있습니다.

순수한 함수는 할 수 없습니다.

예를 들어, 텍스트 상자의 텍스트를 설정하는 함수는 멱등 적이지만 (여러 호출이 동일한 텍스트를 표시하기 때문에) 순수하지는 않습니다.
마찬가지로, GUID (카운트가 아님)로 레코드를 삭제하는 것은 후속 호출 후에도 행이 삭제 된 상태로 유지되기 때문에 멱등 적입니다. (추가 호출은 아무것도하지 않음)


순수 기능은 출력이되는 부작용이없는 함수 만을 호출입니다 - 입력에 의해 결정 f(x)에 상관없이 당신이 전화를 몇 번이나 같은 결과를 제공하지 않습니다.

멱등 이다 - 함수 결과를 변경하지 않고 여러 차례인가 될 수있는 하나이며 f(f(x))동일하다 f(x).

함수는 순수, 멱등, 둘 다 또는 둘 다일 수 있습니다.


기능적 순도는 부작용이 없음을 의미합니다. 반면 멱등 성은 여러 호출에 대해 함수가 변하지 않음을 의미합니다.

모든 순수 함수는 부작용이 멱등 적입니다. 순수 함수는 한 번 이상 호출 되더라도 부작용이 발생하지 않기 때문입니다. 그러나 반환 값 멱등 성은 순도에 영향을받지 않는 f (f (x)) = f (x)를 의미합니다.


아니요, 멱등 함수는 프로그램 / 오브젝트 / 머신 상태를 변경하고 한 번만 변경합니다 (반복 호출에도 불구하고). 순수 함수는 아무것도 변경하지 않으며 호출 될 때마다 (반환) 결과를 계속 제공합니다.


혼란의 큰 원인은 컴퓨터 과학에서 명령형 프로그래밍과 함수형 프로그래밍의 멱등성에 대해 서로 다른 정의가있는 것 같습니다.

wikipedia에서 ( https://en.wikipedia.org/wiki/Idempotence#Computer_science_meaning )

컴퓨터 과학에서 멱 등성이라는 용어는 한 번 또는 여러 번 실행하면 동일한 결과를 생성하는 작업을 더 포괄적으로 설명하는 데 사용됩니다. 이는 적용되는 상황에 따라 다른 의미를 가질 수 있습니다. 예를 들어, 부작용이있는 메서드 또는 서브 루틴 호출의 경우 수정 된 상태가 첫 번째 호출 후에도 동일하게 유지됨을 의미합니다. 그러나 함수형 프로그래밍에서 멱등 함수는 모든 값 x에 대해 f (f (x)) = f (x) 속성을 갖는 함수입니다.

순수한 기능은 부작용을 일으키지 않기 때문에 멱등 성은 순도와 관련이 없다고 생각합니다.


순수 함수 = 멱 등성 + 입력 변수에 변화 없음.

참조 URL : https://stackoverflow.com/questions/4801282/are-idempotent-functions-the-same-as-pure-functions

반응형