2012-02-21 38 views

回答

2

如果使用「像谷歌協議的能力緩衝區「,你的意思是爲多種語言生成代碼的能力,那麼可能這種東西不存在。在不支持它們的語言中模擬總和類型在最好情況下是尷尬的(例如,嘗試對boost進行模式匹配:變體)。因此,如果主要目標是主流語言,則將它們排除在外是有道理的。

如果你滿足於只使用哈斯克爾/ ocaml的/不管有很多的選擇。 Haskell的有cerealbinarysafecopy和可能其他人。 Ocaml有piqi project

+1

那麼你不需要模式匹配,只有標籤聯合。另一個例子是帶有3個可選字段的protobuf,約束條件是一次只能設置其中一個字段。我主要在尋找支持一些主流語言(如C++,Java或Python)的跨平臺。 – user239558 2012-02-21 19:31:48

+0

我認爲總和類型是不切實際的(不可能)沒有模式匹配。可選字段的使用是脆弱的,因爲通常不可能強制執行該常量。希望您可以連接消息,並且在連接期間可能會破壞約束 – Shimuuar 2012-02-25 19:07:53

2

我不知道,支持超過Piqi(我的作者)和其他類型的任何實際的系統。 Piqi與Protocol Buffers兼容,並且本地支持OCaml和Erlang。協議緩衝區中沒有和類型是我創建它的原因之一。

我的計劃是擴大Piqi支持其他語言如Haskell中,Clojure的等

0

是否有需要「高性能」格式?許多通用的格式應該能夠簡單地使用現有的結構 - 具體而言,地圖/哈希表,支持工會(只包括與關鍵條目,指出實際值的類型)。 所以,也許你可以使用簡單的約定來使用,比如說JSON來傳輸這樣的內容。