Tôi nghe rằng Data.Text
sẽ thay thế String
giây trong các phiên bản Haskell trong tương lai. Một vấn đề tôi có với điều này là (++)
chỉ được xác định cho danh sách. Để nối hai số điện thoại Text
s, tôi cần sử dụngCách tiêu chuẩn tham gia hai Data.Texts không có `mappend`
text1 `mappend` text2
Được tiết lộ nhanh chóng. Lý tưởng nhất là tôi muốn có thể sử dụng ++
trên các số Text
s này, nhưng nếu không, một giải pháp thay thế khác là gì? Tôi có thể định nghĩa toán tử infix của riêng mình, nhưng tôi muốn một cách tiêu chuẩn để làm điều này.
Đó là toán tử có tên kém. '<>' có ngữ nghĩa "không bằng". Sẽ tốt hơn nếu khái quát hóa '++' để làm việc trên tất cả các Monoids. –
<> đã được chọn bởi vì nó đã được sử dụng bởi các thư viện in ấn đẹp với ngữ nghĩa monoidal, và tùy chọn ít gây khó chịu nhất mà không phá vỡ mã hiện có, hoặc có những thành kiến lẻ. Nói chung, việc tổng quát (++) không thể thực hiện theo cách làm cho các thư viện in đẹp đẹp do mức ưu tiên, và nó có ý nghĩa khác trước khi có 98, khi nó được sử dụng cho những gì chúng ta gọi mplus ngay bây giờ. Nếu chúng ta tránh những thứ có ý nghĩa bằng các ngôn ngữ khác, chúng ta sẽ không còn người điều khiển nào nữa! Các toán tử <<, >>, -,!,%,: Vv tất cả đều có ngữ nghĩa khác trong các ngôn ngữ khác. –
Lạ, tôi đang cố gắng sử dụng nó nhưng nhận được 'Không nằm trong phạm vi:‘ <> ’'. GHC 7.10.3 – klappvisor