Tôi đang cố gắng tạo vòng Z/n (như số học bình thường, nhưng modulo một số số nguyên). Ví dụ mẫu là Z4:Hàm tạo dữ liệu trong mẫu haskell
instance Additive.C Z4 where
zero = Z4 0
(Z4 x) + (Z4 y) = Z4 $ (x + y) `mod` 4
Và cứ như vậy cho vòng. Tôi muốn có thể nhanh chóng tạo ra những điều này, và tôi nghĩ rằng cách để làm điều đó là với mẫu haskell. Lý tưởng nhất là tôi muốn chỉ cần đi $(makeZ 4)
và nó nhổ ra mã cho Z4
như tôi đã xác định ở trên.
Tôi đang gặp nhiều rắc rối với điều này. Khi tôi làm genData n = [d| data $n = $n Integer]
tôi nhận được "lỗi phân tích cú pháp trong khai báo dữ liệu/newtype". Nó hoạt động nếu tôi không sử dụng các biến mặc dù: [d| data Z5 = Z5 Integer |]
, điều đó có nghĩa là tôi đang làm điều gì đó kỳ lạ với các biến. Tôi không chắc chắn những gì mặc dù; Tôi đã thử xây dựng chúng thông qua newName và điều đó dường như không hoạt động.
Có ai có thể giúp tôi với những gì đang xảy ra ở đây không?
Tôi không phải là Trình hướng dẫn mẫu Haskell, nhưng tôi cá cược những người sẽ muốn xem mã Haskell mẫu của bạn. –