2015-02-09 19 views
6

Tôi đã xem qua source code cho dự án AI sớm Parry gần đây. Đó là khó khăn bởi vì phần lớn các mã được viết trong MLISP, mà không có việc thực hiện vẫn còn tồn tại (mà tôi biết). Thay vào đó, tôi đã sử dụng đặc tả ngôn ngữ (MLISP Users' Manual và trước đó là MLISP Technical Report).Từ khóa ALSO có ý nghĩa gì trong MLISP?

Một sự tò mò mà tôi đã không thể giải thích là IF-THEN-ELSE-ALSO xây dựng, ví dụ:

IF !LAMBDANAME(B) THEN ERROR("NONLAMBDA INTO REACT2",B) ALSO RETURN NIL; 

Các tài liệu tôi đã có thể tìm thấy không đề cập đến một khoản ALSO cho tuyên bố IF, và tôi Tôi gãi đầu một chút để hiểu nó là gì.

Một gợi ý hợp lý mà tôi đã thấy là nó được sử dụng theo cách mệnh đề finally được sử dụng để xử lý ngoại lệ trong Java, tức là chạy mã dọn dẹp cho dù chấm dứt IF. Mặt khác, điều đó không giải thích các tuyên bố xuất hiện không bao giờ nêu ra ngoại lệ, như:

IF REACTTO='QUIT THEN REACTTO:=NIL ALSO TRACE_MEM:='NOSPECIALANAPH; 

Bất kỳ ý tưởng nào?

+0

Tổng đoán, nhưng có lẽ nó chỉ là một phần của đường cú pháp để chạy báo cáo kết quả thứ hai sau khi người đầu tiên, trong trường hợp này, một NẾU ... ELSE? – Linuxios

Trả lời

7
IF e1 THEN a ALSO b ALSO c ELSE d ALSO e ALSO f 

là chỉ

(COND (e1 a b c) (T d e f)) 

Xem MLISP từ David Canfield Smith, 1970.

+0

Vì vậy, 'a cũng b cũng c' về cơ bản là đường cho' (progn() a b c) '? –

+0

Tôi là MLISP-dốt nát - có phải 'progn' cần mẫu trống không? Trong CL tôi sẽ chỉ nói '(progn a b c) '. – khedron

+0

@khedron: không, đó chỉ là tôi đang cẩu thả và bối rối 'progn' với' prog'. –

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