2012-10-17 13 views
7

Tôi đã đọc các câu hỏi SO what does slash(/) do in prolog?What is the meaning of predicate “simple/1” in Prolog (SWI-Prolog), nhưng các liên kết này dường như không giúp tôi.Ý nghĩa của dấu gạch chéo sau tên vị ngữ trong Prolog là gì?

Tôi đã thực hiện một số hướng dẫn cho người mới bắt đầu về Prolog. Các cụm từ như Solve/4 hoặc Go/1 nhầm lẫn tôi. Chữ số và số đó có nghĩa là gì?

Trả lời

13

Đây là số đối số mà hàm mong đợi trong chữ ký của nó. Hãy cẩn thận với các toán tử infix, có thể chấp nhận nhiều đối số ngay cả khi cách chúng được gọi là bằng cách đặt chúng vào giữa các đối số. Tức là, bạn có thể nghĩ ra một cái gì đó như bổ sung thông thường, +, như một toán tử nhị phân. Vì vậy, A+B thực sự giống như +(A,B), có nghĩa là bạn sẽ xác định + với +/2.

+4

lưu ý tới áp phích của câu hỏi: điều này đôi khi còn được gọi là một vị ngữ của vị ngữ. –

+0

@ DavorinRuševljan ... Vui lòng cho tôi biết 'Arity' là gì! –

+2

số đối số cho vị từ. Tôi đã đề cập nó vì bạn sẽ thường xuyên tìm thấy thuật ngữ đó trong khi đọc về Prolog. –

2

Tôi trích dẫn từ trang 8 của 'Prolog: Tiêu chuẩn: Hướng dẫn tham khảo' (chỉ mục 2^khi tôi googled 'chỉ báo biến vị ngữ prolog').

chỉ Predicate ... Đó là một hạn trệt của Name hình thức/arity

ISO BUILTIN functor/3 truy cập dữ liệu như vậy

?- functor(append(a,b,c),Name,Arity). 
Name = append, 
Arity = 3. 
2

Như EMS và Chac giải thích con số này biểu thị số lượng đối số. Lý do tại sao bạn sẽ tìm thấy số này trong tài liệu là vì các vị từ có cùng tên và các số khác nhau (số lượng đối số) là các biến vị ngữ khác nhau.

Vì vậy, vị ngữ:

my_predicate/3 

là vị ngữ khác nhau từ:

my_predicate/4 

và số được bao gồm để cung cấp cho dấu hiệu rõ ràng về cái nào họ đang nói về.