2010-03-06 6 views
13

현재 널리 사용되는 기능적 언어 중 하나라도 &을 권장한다면 메모 작성의 강도를 중점적으로 고르려면 &의 메모 작성을 지원합니까?기능 언어 및 암기 지원

업데이트 : 노드가 함수 나 데이터 일 수있는 방향 그래프를 최적화하려고합니다. 그래프의 노드가 업데이트되면 다른 노드의 값이 변경된 노드에 종속적 인 경우에만 다시 계산해야합니다.

업데이트 2 : 무료 또는 오픈 소스 언어/런타임이 필요합니다.

+1

재미 있고 관련성이 높은 http://stackoverflow.com/questions/1932968/why-memoization-is-not-a-language-feature – Joel

+0

Excel이 필요하십니까 ?? – nicolas

답변

7

하스켈의 경우 Conal Elliott은 functional memo tries에 아름다운 블로그 항목을 게시했습니다. 작품은 매우 똑똑하고 아주 깊으며, Conal은 나중에이를 polymorphic functions으로 확장했습니다. 어떤 언어를 사용하든이 내용은 매우 좋습니다. 왜냐하면 은 기능적 언어로 깊은 아이디어의 근원적 인 아이디어를 발견하기 때문입니다.

그러나 업데이트를 살펴보면 메모 작성이 실제로 원하는 것이 분명하지 않습니다. 확장 된 문제 성명 (방향 그래프를 통해 업데이트 전파)은 증분 계산의 거의 텍스트 북 예제이며 Bob Harper와 Umut Acar이 많은 작업을 수행했습니다. 표준 ML로 작성된 무료 라이브러리가 있다고 생각합니다. Umut의 페이지 self-adjusting computation을보십시오.

+0

@Norman - 흥미로운 링크를 주셔서 감사 드리며 업데이트를 진행하면서 동의했습니다. 그리고 그것에 대해 더 생각한 후에 나는 메모 생성이 해결책이 아님을 깨달았습니다 .... 그러나 나는 아직도 얼마나 심오한 메모 작성 지원을하고 있는지 알고 싶어합니다. 갈 수있다. – Joel

+0

위의 내용에 포함 된 자기 조정 계산에 대한 링크를 따라 가면 http://otic.uchicago.edu/~umut/papers/toplas06.html이 나옵니다. 정확히 "적응 기능 언어"입니다. "적응성 프리미티브로 확장 된 가치에 의한 함수 언어." .... "적응 형 프로그램이 실행되면 기본 시스템은 동적 종속 그래프의 형태로 실행시 데이터 및 제어 종속성을 나타냅니다. 프로그램에 대한 입력이 변경되면 변경 전파 알고리즘이 출력과 동적 변화를 전파하여 의존 그래프 생성 " – Joel

+0

polymorphic memoization (조작 마법보다 깊고 우아한 속성 사용)에 대한보다 세련된 접근법에 대해서는 post [Unmemoization을 통한 다형 함수 기억하기] (http://conal.net/blog/posts/memoizing-polymorphic-functions-via-unmemoization) *, 주로 Dan Piponi의 포스트에 대한 내 환기로 이루어져있다. * [고등학교 대수학 및 한정어를 사용한 다형 함수 기억하기] (http://blog.sigfpe.com/2009/11/ memoizing-polymorphic-functions-with.html) *. – Conal

4

하스켈에서 시작하려면 this을 참조하십시오.

Lisp의 경우 this이 Google에서 처음으로 관련성이 높은 것으로 나타났습니다.

F # this의 경우 시작하는 것이 좋습니다.

이제 너를 위해 인터넷 검색이 끝났어. 이 중 어떤 것입니까 좋은을 지원합니까? 당신이 결정한 것은 :-)

오, 나는 Mathematica를 권하고 싶지만, 많은 사람들이 그 가격표로 연기된다는 것을 이해한다. 엄밀히 말하면 함수 프로그래밍 시스템보다 용어 재 작성 시스템이 더 많을 것이고 단어의 어떤 의미에서는 순수하지 않습니다. 그러나 그것은 메모를합니다.

EDIT : 나는 현재 트랙션이 많은 Erlang을 잊어 버렸습니다. 어떻게 작동하는지는 모르지만 메모 작성을 할 수있을 것으로 기대합니다.

3

네, 메모 작성을 전혀 원하지 않으면 정확한 종속성 추적이 필요합니다. http://web.engr.oregonstate.edu/~erwig/fgl/

:이 논문은 크게 문서를 이해 공업 도움이됩니다 http://hackage.haskell.org/cgi-bin/hackage-scripts/package/fgl

: 그런 다음 업데이트 할 노드들을 정확하게 알고 후속 함수를 사용 UR 방향 그래프를 만들 하스켈 기능 그래프 라이브러리 (FGL)를 사용할 수 있습니다

후속 기능이 다른 방향으로가는 모듈 Data.Graph.Inductive.Graph

에, SUC 이름이 지원 한 인기 함수형 언어는 엑셀입니다. :)

+0

포인터를 가져 주셔서 감사합니다. – Joel