2013-05-31 1 views
0

병렬 프로그래밍 추상화를 제공하는 Rivertrail과 같은 Javascript 프레임 워크에 관심이 있지만 작업을 수행하기 위해 전달하는 함수가 no external side effects 인 경우에만 잘 정의 된 의미를 제공합니다.함수에 외부 부작용이 있는지 확인하는 방법은 없습니까?

전달 된 함수가 부작용이 없음을 확인하는 방법이 있다면 궁금합니다. 또는 함수에서 환경의 모든 것을 숨길 수 있습니다 (그래서 아무것도 수정할 필요가 없습니다)? 또는 임시로 환경 "const"(함수 정의의 범위 만)에있는 모든 것을 선언하십시오 (또는 gcc에서 __attribute__ ((pure))을 단순히 선언하는 것과 동일한 의미를 갖는 다른 미친 아이디어).

병렬 프로그래밍 "순수한"함수형 프로그래밍이 실제로 효과를 낼 수있는 장소 중 하나입니다. 병렬 프로그램에 대한 합리적인 의미를 정의하는 순수한 함수가 없다면 (C++의 의미를 확인하여 데이터 레이스 인을 정의해야합니다.)

가능한 경우 누군가가 유용하다고 생각할 수있는 다른 장소를 상상할 수 있습니다. 예를 들어, 웹 페이지의 사용자가 쿼리 중에 특정 조건을 검사하는 순수한 부작용없는 자바 스크립트 함수를 전달할 수 있도록하는 것이 유용 할 수 있습니다.

답변

2

전달 된 함수가 부작용이 아닌지 확인 하시겠습니까?

이것은 형식 검사의 한 형태 인 "effect analysis"입니다.

자바 스크립트에는 유형 및 효과 시스템이 없기 때문에 부작용을 감지하는 방법은 반드시 근사치이며 휴리스틱에 의존합니다. Javascript의 경우 일반적으로이를 수행 할 방법이 없습니다.

관련 문제