2013-03-13 4 views
2

MessagePack은 바이너리 직렬화 형식으로, 하스켈과 파이썬 모두에서 사용할 수 있습니다. 내 프로젝트에서 혼합해야하는 언어입니다. 내가 직렬화 할 필요가Haskell에서 Data.MessagePack을 사용하는 방법

구조는 매우 단순하다 :

data Citation = Citation { 
    sourceDocument :: Document, 
    targetDocument :: Document, 
    links :: [ Reference ] 
} 

type Reference = (Int, Int) 

data Document = Document { 
    words :: [ ByteString ], 
    wordNums :: [ Int ] 
} 

하지만 어디서부터 시작 모른다. 분명히 MessagePack 용 라이브러리는 "Document"를 OBJECT의 인스턴스로 자동 설정함으로써 위의 작업을 쉽게 수행 할 수있는 일종의 deriving mechanism을 지원하지만 자동 유도를 호출하려는 내 시도는 지금까지 실패했습니다 ...

너 생각하니? 여기

라이브러리에 대한 링크입니다 : http://hackage.haskell.org/package/msgpack-0.7.1.5 그리고 여기에 위의 버전에 대한 설명서에 따라 작동합니다, 어느 것도 몇 가지 예에 대한 링크입니다 :

  1. http://wiki.msgpack.org/display/MSGPACK/QuickStart+for+Haskell

답변

3

나는 msgpack에 익숙하지 않다. 그러나 이것과 같은 것으로 추측된다.

{-# LANGUAGE TemplateHaskell #-} 

import Data.MessagePack.Derive 

-- I don't know which of these lines you need 
-- I also don't know whether the True should actually be False 
$(deriveObject True ''Document) 
$(derivePack True ''Document) 
$(deriveUnpack True ''Document) 

(NB는 일반적으로 대신 당신이 TemplateHaskell 또는 무엇이든을 사용하지 않았기 때문에 당신의 시도는 아마 작동하지 않았다는 것을 추측 우리를 떠나는 우리에게 작동하지 않았다 당신이 시도 코드를 보여주기 위해 도움이됩니다.)

+0

감사합니다. @ dave4420. 네, 다음 번에 내 시도를 적어 둡니다. 그러나 진실은 그 돈이 내 마음에 들지 않았다는 것입니다. 나는 그것을 시도하지 않았습니다. – dsign

+1

msgpack Haskell lib 작성자가 최신 버전에서 자동 파생을 사용하지 않도록 설정 한 것 같습니다. – donatello

+0

실제로 @donatello. 그리고 이것은 [data-msgpack] (https://hackage.haskell.org/package/data-msgpack-0.0.9)에서 사용할 수 없습니다. –

관련 문제