2013-03-21 21 views
7

Giả sử tôi có một kiểu dữ liệu đại số với nhiều nhà thầu, nhưXác định TH trường Lift với nhiều loại dữ liệu đại số

data Animal a = Mouse a | Beaver a | Rabbit a 

Làm thế nào tôi sẽ tạo ra một trường hợp Lift một cách hiệu quả? Cách dễ nhất để làm như vậy là

instance (Lift a) => Lift (Animal a) where 
     lift (Mouse x) = [| Mouse x |] 
     lift (Beaver x) = [| Beaver x |] 
     lift (Rabbit x) = [| Rabbit x |] 

Điều này là rất thừa. Tất nhiên tôi không thể trực tiếp tóm tắt các loài động vật khác nhau như lift x = [| x |], mặc dù khái niệm đó là tương tự như những gì tôi muốn đạt được. Có cách nào để làm điều này trong TH để tôi không phải viết cùng một dòng một lần nữa cho mỗi nhà xây dựng dữ liệu?

Trả lời

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