2012-02-21 27 views
6

Tôi tự hỏi liệu có bất kỳ thư viện tuần tự hiệu năng cao nào (như bộ đệm giao thức của Google) hỗ trợ sum types hay không.Thư viện tuần tự hóa đối tượng hiệu suất cao hỗ trợ các loại số

loại Sum được gắn thẻ công đoàn, về cơ bản khả năng để nói rằng một cái gì đó hoặc là A, loại B, hoặc C. Sum được sử dụng trong ngôn ngữ như Haskell và ML có hỗ trợ Algebraic Data Types

Trả lời

2

Nếu bởi "như giao thức Google bộ đệm "bạn có nghĩa là khả năng tạo mã cho nhiều ngôn ngữ thì có lẽ điều đó không tồn tại. Mô phỏng các loại tổng hợp bằng các ngôn ngữ không hỗ trợ chúng là khó xử nhất (cố gắng so khớp mẫu trên tăng: biến thể chẳng hạn). Vì vậy, nó có ý nghĩa để bỏ chúng ra nếu mục tiêu chính là ngôn ngữ chính thống.

Nếu bạn có nội dung chỉ sử dụng haskell/ocaml/bất kể có nhiều lựa chọn. Đối với haskell có cereal, binary, safecopy và có thể là những người khác. Có piqi project cho ocaml.

+1

Vâng, bạn không cần khớp mẫu, chỉ các công đoàn được gắn thẻ. Một ví dụ khác sẽ là một protobuf với 3 trường tùy chọn với một ràng buộc mà chỉ một trong số chúng có thể được đặt tại một thời điểm. Tôi chủ yếu tìm kiếm nền tảng chéo với sự hỗ trợ cho một số ngôn ngữ chính như C++, Java hoặc Python. – user239558

+0

Tôi nghĩ rằng các loại tổng hợp là không thực tế (không imposible) mà không khớp mẫu. Sử dụng các trường tùy chọn là mong manh vì nó không thể thực thi mà constaint nói chung. dự kiến ​​rằng bạn có thể nối các thông điệp và ràng buộc có thể bị hỏng trong quá trình nối – Shimuuar

2

Tôi không biết bất kỳ hệ thống thực tế nào hỗ trợ các loại tổng hợp ngoài Piqi (Tôi là tác giả). Piqi tương thích với Protocol Buffers và hỗ trợ OCaml và Erlang. Sự vắng mặt của các loại tổng hợp trong bộ đệm Protocol là một trong những lý do tại sao tôi tạo ra nó.

Kế hoạch của tôi là mở rộng Piqi để hỗ trợ các ngôn ngữ khác như Haskell, Clojure vv

0

Có cần cho một định dạng "hiệu suất cao"? Nhiều định dạng có mục đích chung có thể chỉ đơn giản là sử dụng các cấu trúc hiện có - cụ thể là Bản đồ/hashtables, để hỗ trợ các công đoàn (chỉ bao gồm mục nhập có khóa cho biết loại giá trị thực). Vì vậy, có lẽ bạn chỉ có thể sử dụng quy ước đơn giản để sử dụng, ví dụ, JSON, để chuyển nội dung đó.

Các vấn đề liên quan