2010-03-03 64 views
5

R6RS hoặc Chez Scheme v7.9.4 có chức năng thư viện để kiểm tra xem danh sách có chứa các phần tử trùng lặp không?Đề án: Phát hiện các phần tử trùng lặp trong danh sách

Cách khác, có hoặc có bất kỳ chức năng tích hợp nào cho các bộ (loại bỏ các phần tử trùng lặp) không? Cho đến nay, tôi chỉ có thể tìm thấy một ví dụ here.

Vấn đề với điều đó là nó không thực sự là một phần của thư viện Đề án Chez. Mặc dù tôi có thể viết phiên bản riêng của mình về điều này, tôi muốn sử dụng một chức năng thư viện nổi tiếng, được kiểm tra và duy trì - đặc biệt là cách cơ bản hoạt động này.

Vì vậy, đơn giản "sử dụng các chức năng được tích hợp sẵn này" hoặc "không có thư viện cài sẵn trong thư viện này" sẽ đủ. Cảm ơn!

Trả lời

4

SRFI 1 on list processing has a delete-duplicates function (để bạn có thể sử dụng và kiểm tra độ dài sau đó) và cũng có thể có các chức năng khác mà bạn có thể thấy hữu ích.

+0

Cảm ơn - trông như thế này sẽ là một chức năng hữu ích. Bất kỳ ý tưởng khi SRFI 1 sẽ làm cho nó vào Chez Đề án? Nó đã có vẻ như có nhiều những gì SRFI này cung cấp, nhưng tôi không thấy các bản sao bị xóa ở bất cứ đâu trong v7.9.4. –

+0

Tôi sử dụng PLT và tôi không biết gì về Chez, nhưng nhiều SRFI nên có sẵn cho bất kỳ triển khai Đề án phổ biến nào; về cơ bản chúng là các thư viện tiêu chuẩn lớn cho Đề án. Google tìm thấy điều này ngay lập tức: https://code.launchpad.net/~scheme-libraries-team/scheme-libraries/srfi Các tệp SLS (nguồn thư viện sơ đồ) này có thể tải được qua Chez, có thể như sau: http: // www .scheme.com/csug8/libraries.html – mquander

+0

Cảm ơn. Có vẻ như điều này có thể hoạt động, mặc dù tôi chưa có cơ hội tải xuống đủ nguồn để thử tải nó vào Chez. –

3

Kyle,

Khi đó tôi cần sử dụng một vài SRFI với Chez Scheme. Một vài rằng một chuyển đổi để sử dụng với Chez Đề án (bao gồm cả SRFI-1) đang ở:

http://github.com/dharmatech/chez-srfi

Sau khi bạn thêm đường dẫn đến 'chez-srfi' để CHEZSCHEMELIBDIRS của bạn, bạn có thể nhập SRFI-1:

(nhập khẩu (srfi: 1))

Ed

+0

Điều này có vẻ thực sự hữu ích, nhưng tôi tiếp tục nhận được "Ngoại lệ: thư viện (srfi: 1) không tìm thấy" khi tôi thử lệnh nhập khẩu trong trình thông dịch lược đồ. Tôi đã thử thiết lập CHEZSCHEMELIBDIRS, chạy với --libdirs, và chạy chương trình từ .../chez-srfi, nhưng nó luôn là kết quả tương tự. Tôi không chắc chắn nếu điều này có liên quan, nhưng git dường như không thích các tệp chứa '*' khi tôi nhân bản kho lưu trữ. –

+0

Yikes, xin lỗi vì đã không trả lời trước đó; Tôi đã không kiểm tra tràn ngăn xếp nhiều thời gian gần đây. Bạn có trên Windows không? Thật không may những thư viện srfi sử dụng một quy ước đặt tên mà không được hỗ trợ trên Windows (điên tôi biết ...). Tôi đang suy nghĩ về việc đưa ra bản sao của bộ sưu tập mà sử dụng "di động" tên. – dharmatech

+0

Không sao cả. Tôi đang sử dụng Windows, vì vậy bạn có thể đếm ít nhất một người hâm mộ nếu bạn có cơ hội phát hành phiên bản di động của thư viện :) –

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