2010-07-29 24 views
5

Tôi đang cố gắng viết một hàm đa hình, mà cần phải làm điều gì đó hơi khác nhau tùy thuộc vào loại tham số. Có cách nào mà tôi có thể làm một mô hình phù hợp với loại đối tượng, bằng cách sử dụng các loại nội trang? Tôi đang nghĩ về điều gì đó dọc theo các dòng sau:Kết hợp mẫu OCaml trên các kiểu dựng sẵn

let to_string v = 
    match v with 
    | string -> v 
    | int -> string_of_int v 
    | _ -> "" 

nhưng điều này dường như không phải là chương trình OCaml hợp lệ.

Tôi đã xem this question, nhưng điều đó cũng không trả lời được câu hỏi của tôi. Tôi sẽ thích để sử dụng các loại nội trang chuẩn, hơn là xây dựng các loại mới cho điều này (mặc dù tôi có thể làm điều đó nếu đó là cách duy nhất).

Trả lời

3

Thực ra câu trả lời đó hoàn toàn áp dụng cho bạn. Bạn chỉ có thể khớp với một loại loại và loại được xác định bởi sự kết hợp của int, string, float, ... không tồn tại và cần được tạo (như trong câu trả lời trước). 'a hoạt động trên một loại cụ thể, nhưng không đại diện cho một liên minh của tất cả các loại.

Bạn có thể làm những gì bạn muốn bằng chức năng C bên ngoài (18.3), mặc dù, liếc qua phần thẻ nguyên tử, tôi không chắc chắn bạn có thể phân biệt charint.

+0

:(-..?. Đó là những gì tôi đã sợ Oh well, tôi đoán chương trình của tôi sẽ chỉ không hoàn toàn trông như đẹp –

+0

Tại sao các bạn cố gắng làm một cái gì đó như thế này có lẽ là một cách tốt hơn – nlucaroni

+0

tôi nghĩ rằng Tôi sẽ có thể viết một hàm đa hình theo cách này, với phần ghi đè cho các kiểu khác nhau mà tôi cần, nhưng suy nghĩ nó hơn một chút, có lẽ tôi sẽ cần phải sử dụng các biến thể, vì tôi cũng sẽ thực hiện một bước lexing. –

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