Tôi muốn xác định toán tử "++>" theo cách sao cho gõ "a ++> b" sẽ tạo danh sách [a, b].Làm thế nào để bạn xác định một toán tử trong prolog để tạo một danh sách?
Tôi đã viết mã sau, nhưng có vẻ như không thực hiện được công việc.
++>(X,Y) :-
[X,Y].
:- op(500,xfy,++>).
Có thực sự hai vấn đề ở đây, xác định điều hành "++>" như một ký hiệu ghi vào, và sắp xếp rằng biểu thức "a ++> b" sẽ được "đánh giá" làm thuật ngữ [a, b]. Phần đầu tiên của điều này là khá chuẩn Prolog như bạn dường như biết từ đề cập đến ** op/3 **. Bắt máy móc tại chỗ để "đánh giá" các điều khoản liên quan đến các nhà điều hành mới là phức tạp hơn. Đối với các hàm số học SWI-Prolog có một chỉ thị cho phép ** là/2 ** để làm việc với các hàm do người dùng định nghĩa, nhưng hàm của bạn không phải là một hàm số học. Tôi có thể chỉ cho bạn cách xác định một vị từ mới ** iz/2 ** mà sẽ "đánh giá" ++> các thuật ngữ. – hardmath
Tôi đã có dịp đi đào cho chỉ thị 'arithmetic_function/1' của SWI-Prolog, và tôi nhận thấy nó đã bị từ chối, có lẽ bị bỏ rơi (http://www.swi-prolog.org/pldoc/man?predicate= arithmetic_function/1). – hardmath