Bộ sưu tập các bộ sưu tập Scala có một số thuộc tính khá thú vị và tôi tự hỏi làm thế nào người ta sẽ thực hiện nó trong Haskell; hoặc nếu nó thậm chí có thể (hoặc một ý tưởng tốt nói chung). Tôi là một chút của một newbie haskell vì vậy tôi muốn nghe suy nghĩ của bạn.Có thể tạo một tập hợp api như Scala 2.8 trong Haskell không?
Định nghĩa bản đồ scala trông như thế này:
def map[B, That](f: A => B)(implicit bf: CanBuildFrom[Repr, B, That]): That
Một tính năng thú vị của API này là nếu bạn ánh xạ qua một chuỗi và chức năng bản đồ của bạn trả về một nhân vật, kết quả sẽ là kiểu string (và không phải danh sách các ký tự).
Trong Haskell, một chuỗi * là * một danh sách các nhân vật. (Điều này không trả lời câu hỏi của bạn trong trường hợp chung, nhưng tôi nghĩ nó không đáng gì cả.) – mipadi
Một thư viện API Scala (2.8) giải quyết xung quanh việc xử lý các loại * hiện có và cách chơi độc đáo với chúng. Hai ví dụ lớn nhất có khả năng là 'String' và mảng. Nếu không có các vấn đề về kiểu hiện có, tôi tin rằng phần lớn các trình xây dựng ngầm là không cần thiết (chúng được thiết kế để cho phép "thu gọn" thành một thùng chứa cùng kiểu với đầu vào). –
pst, không phải vậy. Xem ví dụ này từ Martin Odersky (http://stackoverflow.com/questions/1722726/is-the-scala-2-8-collections-library-a-case-of-the-longest-suicide-note-in-histo/1728140 # 1728140) trong đó vấn đề là BitSet có một đại diện rất hiệu quả chỉ tương thích với int nhưng chúng tôi vẫn muốn có thể xử lý nó như bất kỳ Set với bản đồ vv. Nếu nó chỉ là một vấn đề "hiện có loại" sau đó BitSet có thể được loại bỏ. –