2012-10-14 3 views
2

순수 함수 프로그래밍 관례보다는 약간 새로운 것으로,이 동적 프로그래밍 사례를 구현하는 방법을 알 수 없습니다. 재귀 적으로 계산되고 그것을 암기하고자하는 함수 f :: String -> [String]이 있습니다. 입력 String은 임의적 일 수 있으므로 게으름 뱅이 Map과 같은 것이 필요하지만 아무 것도 찾을 수 없다고 생각합니다. 어떻게 하스켈에서 그런 경우를 구현 하는가?하스켈의 문자열 키로 동적 프로그래밍

+3

당신은 해커를 보았습니까? 사용할 수있는 약 12 ​​개의 메모 라이브러리가 있습니다. –

답변

1

가 memoizer 라이브러리를 사용 :

import qualified Data.MemoCombinators as Memo 

f :: String -> [String] 
f = Memo.list Memo.char memof -- because String = [Char] 
    where 
    memof x = ... f ...   -- call *f* recusively (not memof) 

더의 documentation를 참조 어쩌면 그것은 당신에게 몇 가지 통찰력을 줄 것이다. 또한 참조하십시오 MemoTrie

+0

외부 라이브러리로 구현되었으며 hackage에서 검색을 검색하지 않았다고 생각했습니다. 그런 기능이 기본 GHC 라이브러리에없는 것은 이상한 것 같습니다. – aplavin