간단한 해시 테이블 algorithm을 실험하는 것은 Data.HashMap을 사용하여 저에게 효과가있는 것처럼 보였습니다. 나는 빠른 성능을 가능하게하는 가변적 인 해쉬 테이블 (Data.HashTable.IO 일까?)을 구현하는 방법을 더 잘 이해하기를 희망한다. 나는 완전히 잃어 버렸습니다 ... 예제 here을 수정하려했으나 반환 된 (말장난 의도 된) IO 유형을 통해 자신의 길을 찾을 수 없었습니다 ... 어떤 종류의 워크 스루 또는 참조에 대해 미리 감사드립니다.초등 중급 하스켈 해시 테이블
예를 들어, 변경 가능한 해시 테이블을 사용하여이 간단한 연습을 구현하는 방법은 무엇입니까?
import qualified Data.HashMap as HM (toList,lookup,insert,empty)
f list = g list HM.empty where
g [] h = HM.toList h
g (x:xs) h = case HM.lookup (x-1) h of
Just _ -> g xs (HM.insert x (x + 1) h)
Nothing -> g xs (HM.insert x x h)
고마워요! 그게 내가 case/lookup 장애물을 통과하게 만든다. (하지만 ... "empty"보다는 "new"와 같이, 운동을위한 몇 가지 더 많은 것들이있는 것 같다.) IO [IO [ k0, v0)]','toList'의 결과입니까?) –
'x :: IO a'가 있으면'x >> = print'를 사용하여 그것을 보여줄 수 있습니다 – cdk
@groovy 그 길은'\ list <- x; 인쇄 목록 ' –