2010-07-27 30 views
5

Tôi đã viết một hàm Lisp trước đó có lỗi. Thách thức đầu tiên là tìm ra cách để xem lại chức năng. Thách thức đó được giải quyết. Bây giờ tôi thấy những gì tôi đã làm sai, tôi muốn sửa đổi các nội dung của các chức năng được xác định mà không cần viết lại toàn bộ điều?Sửa đổi chức năng Lisp mà không cần viết lại nó?

Có vẻ như thông minh như Lisp, có một cách để làm điều này, tôi chỉ không biết nó là gì vì tôi khá mới với ngôn ngữ. Điều này có thể được thực hiện?

+0

tôi nghĩ rằng tôi thấy sự hiểu lầm của mình. tôi chỉ đang mã hóa trong REPL ngay bây giờ. Vì vậy, câu hỏi của tôi đã được nhiều hơn dọc theo dòng này (chỉ và ví dụ): nếu tôi có (defun add-something (x) (+ x 5)) và tôi muốn thay đổi nó để (+ x 9) là có bất kỳ cách dễ dàng để làm điều đó mà không RETYPING tất cả mọi thứ (bc trong trường hợp của tôi chức năng là MUCH còn)? tôi nghĩ rằng câu trả lời của tôi là viết mã của tôi trong một FILE thay vì REPL và chỉ làm (load-file) hoặc một cái gì đó. – trh178

Trả lời

3

Đánh giá từ câu hỏi, tôi nghĩ rằng bạn có thiết lập lạ. Nó dường như chỉ ra rằng bạn đang viết các hàm của bạn trực tiếp tại REPL. Đừng làm thế.

Thiết lập thông thường là có một IDE (ví dụ, Emacs với Slime), nơi bạn chỉnh sửa tệp nguồn và sau đó "gửi" các biểu mẫu cấp cao nhất (như định nghĩa hàm) cho REPL.

+2

Đúng. Để thêm vào điều này, bạn có thể chỉnh sửa nó tại chỗ và gửi lại nó, thay vì phải viết lại toàn bộ điều từ đầu. Chỉ sử dụng REPL cho những thứ bạn không cần nữa. –

+0

chính xác ... im một thằng ngốc! (hoặc ít nhất tôi cảm thấy như một :), có lẽ chúng tôi sẽ chỉ gọi nó là 'người mới bắt đầu' thay vì ... haha). def một khoảnh khắc khuôn mặt/lòng bàn tay. cảm ơn anyways cho sự giúp đỡ nhanh chóng. – trh178

0

Có chức năng advice trong nhiều Lisps, cho phép bạn chạy mã bổ sung trước hoặc sau hoặc xung quanh một hàm hiện có. Nhưng nhận xét là đúng, tại sao bạn sẽ không viết lại một hàm nếu bạn vẫn đang học và thử những thứ đó? Họ có tính phí bạn theo chu kỳ biên dịch không?

2

Mỗi REPL hữu ích đều có chức năng lịch sử. Nó cho phép bạn di chuyển trong lịch sử đầu vào của bạn về phía sau và tiến lên.

Khi tôi viết mã trong REPL, thao tác gõ phím đơn giản như m-p sẽ trả về mã cũ hơn. Một số IDE thậm chí có thể định vị mã nguồn trong trình nghe Lisp với m-. .

Trong hầu hết REPLS, bạn cũng có thể tìm kiếm ngược lại.

Nếu bạn muốn có một bản ghi của đầu vào của bạn sử dụng chức năng dribble ..

Có một số tùy chọn hơn, như lấy mã từ chức năng - khi một Lisp IDE hỗ trợ đó.

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