2011-01-21 61 views
8

tôi đã viết ngữ này trong prolog:cảnh báo trong prolog

list([]). 
list([X|L]) :- list(L). 

nó hoạt động tốt, nhưng tôi đã nhận cảnh báo này:

**Warning: /Users/hw6.pl:2: 
      Singleton variables: [X]** % 

gì tôi có thể làm gì để tránh nó?

Trả lời

16

Cảnh báo cho bạn biết rằng bạn có một biến được sử dụng chỉ một lần trong mệnh đề đó của danh sách biến vị ngữ (trong trường hợp này là mệnh đề thứ hai).

Tại sao nó cảnh báo bạn về điều này? Bởi vì nó thường xuyên hơn là bạn đã viết sai chính tả tên biến. Mã kết quả khi bạn viết sai chính tả một biến cũng là một chương trình prolog hợp lệ, do đó việc gỡ lỗi sẽ gây đau đớn nếu nó không cảnh báo bạn.

Nếu bạn không sử dụng biến đó (X), bạn có thể sử dụng biến ẩn danh để thay thế. Để sử dụng biến ẩn danh, bạn phải sử dụng _ làm cụm từ thay vì tên biến.

Trong ví dụ của bạn nó sẽ là:

list([]). 
list([_|L]) :- list(L). 
2

Gusbro là hoàn toàn đúng. Khi bạn sử dụng một biến chỉ khi bạn sẽ nhận được một biến singleton. Chương trình của bạn vẫn chính xác về cú pháp, nhưng prolog giả định bạn đã nhập sai mã của bạn. Biến gạch dưới sẽ luôn luôn thống nhất là đúng nếu nó được đưa ra bất kỳ câu trả lời nào.