Tôi hiện đang làm việc trên một dự án rất ngắn trên Prolog, và chỉ gặp khó khăn khi cố gắng áp dụng "bộ lọc" mà tôi đã tạo vào danh sách. Tôi có những gì bạn có thể gọi là bộ lọc đã sẵn sàng, nhưng tôi không thể áp dụng nó. Sẽ tốt hơn nếu tôi minh họa:Prolog: Lọc danh sách?
filter(A, B)
... kết quả 'đúng' nếu đáp ứng các điều kiện nhất định.
filterList(A, [X, Y, Z])
... ra một danh sách bao gồm tất cả các yếu tố từ đối số thứ hai mà làm cho sản lượng lọc sai. (Vì vậy, nếu bộ lọc (A, X) là đúng, đầu ra là [Y, Z]).
Tôi có chức năng "bộ lọc" sẵn sàng, nhưng bây giờ tôi cần áp dụng nó vào danh sách như được hiển thị trên ví dụ thứ hai, loại trừ tất cả các phần tử mà bộ lọc trả về true khi được áp dụng với đối số đầu tiên.
Vì vậy, nếu bộ lọc là A == B đơn giản, chức năng được cho là nhận A [A, B, A, C, D, A] và đầu ra [B, C, D], đã xóa tất cả các yếu tố mà bộ lọc áp dụng, rõ ràng.
Tôi đang gặp sự cố với cấu trúc cơ bản của hàm, vì vậy nếu có ai đó có thể cung cấp phác thảo cơ bản cho một chức năng như vậy, nó sẽ giúp ích rất nhiều. Tôi đã đơn giản hóa tình huống của mình càng nhiều càng tốt để tôi có thể lấy bất cứ điều gì bạn có thể cung cấp và sửa đổi nó cho các nhu cầu của tôi.
Cảm ơn trước!
Pitty Naish đề xuất áp dụng/3 trong kết luận của mình, nhưng tôi đoán cách hiện tại để đi là sử dụng cuộc gọi/n. áp dụng/3 chỉ đơn giản là gọi/3. –
Xem phần thảo luận tại sao Tài liệu tham khảo Naish bị tranh chấp: http://www.complang.tuwien.ac.at/ulrich/Prolog-inedit/naish.html –