2010-11-18 48 views
6

Tôi có một vấn đề với việc tạo ra một bộ sưu tập có chứa các yếu tố không đồng nhất, trong phần tử cụ thể sẽ được cấu trúc như sau:Định nghĩa của Sets trong ocaml

(a, 1), ((a, 1), 1)), ((a, 1), 1), 1) và cứ thế ....

Tôi có thể làm điều này bằng cách sử dụng mô-đun Bộ ocaml không?

hơn nữa cũng có một số chức năng cho phép tôi tạo sản phẩm Descartes giữa các bộ (cũng không đồng nhất)?

Trả lời

8

Bạn không thể tạo tập hợp các phần tử không đồng nhất. Tất nhiên bạn có thể xác định một loại để thống nhất các loại nếu bạn biết chúng trước. Dường như bạn làm, và nó có thể được loại đệ quy được xác định bởi:

type ('a,'b) r = | L of 'a 
       | N of (('a,'b) r * 'b) 

Vì vậy, ví dụ bạn sẽ xây dựng như,

N (L a,1) 
N (N (L a,1),1) 
N (N (N (L a,1),1),1) 

Sau đó, bạn sẽ chỉ xây dựng các mô-đun có thứ tự để bao gồm các so sánh chức năng.

Trong trường hợp tạo sản phẩm Descartes, bạn sẽ không xử lý các phần tử không đồng nhất tại thời điểm này, nhưng là một bộ của loại trước đó. Điều này sẽ yêu cầu một mô-đun Ordered mới để đối phó với những so sánh đó.

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