Vì vậy, tôi thích Haskell, nhưng không hài lòng với lớp Num. Vì vậy, tôi muốn làm cho phân cấp typeclass của riêng tôi cho các loại đại số.
Vấn đề là, ngay cả khi tôi nhập Prelude ẩn Num và tất cả mọi thứ liên kết với nó, vẫn là cách duy nhất để làm cho chữ 1 có kiểu t là để làm cho t instance Num.
Tôi rất thích để làm cho lớp fromInteger của riêng tôi và để lại Num ra khỏi bức tranh hoàn toàn, như thế nàyGhi đè từInteger trong Haskell
import Prelude hiding (everything having to do with Num)
import qualified Prelude (everything having to do with Num)
class (Eq fi) => FromInteger fi where
fromInteger :: Integral -> fi
foo :: (FromInteger fi) => fi -> String
foo 1 = "that was a one"
foo 0 = "that was a zero"
foo n = "that was neither zero nor one"
và sau đó tôi sẽ thực hiện fromInteger thích hợp cho thương hiệu kiểu mới và không bao giờ có thể nói bất cứ điều gì về Num.
Có cách nào để yêu cầu trình phân tích cú pháp sử dụng một phương thức khác từ phương thứcInteger không?
Cảm ơn!
Tuyệt, thật tuyệt vời! –
@JosephVictor Hãy xem [Prumerude Prelude] (http://www.haskell.org/haskellwiki/Numeric_Prelude). Bạn có thể tìm thấy nó làm những gì bạn muốn. – dave4420
Thậm chí còn mát hơn (về cơ bản, chính xác những gì tôi đang viết!) –