2012-02-21 12 views

cevap

2

Eğer destekleyen böyle Haskell ve ML olarak dillerde kullanılan söylemek temelde yeteneğini sendikaları etiketlenir arabellekleri "Birden çok dil için kod üretme yeteneğini kastediyorsunuzdur, o zaman muhtemelen böyle bir şey yoktur. Onları desteklemeyen dillerdeki benzetim toplamları, en iyi ihtimalle gariptir (örneğin, boost üzerinde desen eşleştirmeyi deneyin: örneğin varyant). Bu yüzden ana hedef ana akım dilleri ise onları dışarıda bırakmak mantıklıdır.

Sadece haskell/ocaml/ile kullanılmaya karar verirseniz çok fazla seçenek vardır. Haskell için cereal, binary, safecopy ve muhtemelen diğerleri vardır. Ocaml için piqi project var.

+1

Desen eşlemesine ihtiyacınız yoktur, yalnızca etiketli birleşik etiketler. Başka bir örnek, bir tanesinin yalnızca bir seferde ayarlanabileceği bir kısıtlamaya sahip 3 isteğe bağlı alanlı bir protobuf olacaktır. Çoğunlukla C++, Java veya belki Python gibi bazı ana dil desteği için çapraz platform arıyorum. – user239558

+0

Özetle, desen eşleştirmesi olmadan toplam türlerinin pratik olmadığı (uygulanamaz) olduğunu düşünüyorum. İsteğe bağlı alanların kullanımı kırılgan olduğundan, genel olarak bu açıklamayı uygulamak mümkün değildir. ileti ve kısıtlamaların birleştirilmesi sırasında birleştirilebilmesi beklenir – Shimuuar

2

Piqi (Ben yazarım) dışındaki toplam türlerini destekleyen herhangi bir pratik sistemden haberdar değilim. Piqi Protokol Tamponlarla uyumludur ve doğal olarak OCaml ve Erlang'ı destekler. Protokol tamponlarında toplam türlerin yokluğu, onu oluşturmamın nedenlerinden biriydi.

Planım orada bir "yüksek performanslı" biçimi için gerek var mı vb Haskell, Clojure,

0

gibi diğer dilleri desteklemek için Piqi genişletmek? Birçok genel amaçlı format, yalnızca mevcut yapıları kullanabilmeli - özellikle de, Haritalar'ı/karma birimleri, sendikaları desteklemek için (sadece gerçek değerin türünü belirten anahtarla giriş dahil). Dolayısıyla, bu tür içerikleri aktarmak için JSON gibi basit bir kuralı kullanabilirsiniz.