2012-10-18 23 views
7

Tôi tự hỏi liệu có thể giữ giá trị được chỉ định trong ghci khi mô-đun được tải lại không?ghci: giữ giá trị được xác định trong phạm vi sau khi tải lại mô-đun

Ví dụ tôi gán một giá trị trong ghci:

ghci> let x = 1 

hoặc

ghci> x <- getLine 

Sau khi nhập :r để tải lại một mô-đun hiện x không nằm trong phạm vi nữa. Nói chung có thể giữ cho bài tập có sẵn không, ví dụ như trong trình thông dịch Python? (điều này thực sự thuận tiện ...)

Thậm chí tho thực tế mỗi dòng trong ghci đại diện cho một hàm (monadically) bị ràng buộc sang kế tiếp tôi vẫn tự hỏi nếu duy trì trạng thái đó là có thể.

Trả lời

4

Tôi không biết bất kỳ cách nào để thực hiện việc này.

Sự cố là bạn có thể có một số biến bị ràng buộc với giá trị của một loại nhất định, chỉnh sửa nguồn để xóa loại đó và nhấn tải lại. Bây giờ bạn có một loại biến không còn tồn tại nữa.

Tuy nhiên, bạn sẽ nghĩ rằng không quá khó để phát hiện điều đó và chỉ loại bỏ các biến không có ý nghĩa nữa. (Phần thực sự thú vị có lẽ là khi một loại vẫn còn tồn tại nhưng có một số trường khác nhau bây giờ, hoặc một cái gì đó tương tự ...)

+1

Tôi không nghĩ rằng ghci có thể làm điều đó, nhưng hoàn toàn có thể thực hiện tương tác Haskell giữ lại các ràng buộc. Ngoài ra, không thực sự cần một lệnh reload. – augustss

+0

Hum phụ thuộc vào cách biến bị ràng buộc vào một không gian tên. Tôi vừa mới bắt đầu sử dụng trình thông dịch tương tác python và thấy tính năng này khá thuận tiện. Nếu bạn kết buộc một biến 'x = 3' cho phép nói trong mô-đun' test' thì biến này nằm trong phạm vi thông qua 'test.x'. Nếu bạn xóa 'x' trong' test' và tải lại mô-đun 'test.x' đã biến mất trong khi ví dụ biến đã định nghĩa trước' x' ở cấp cao nhất vẫn nằm trong phạm vi. – JHannes

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