2010-03-27 45 views
5

Có cách nào để có một thông dịch viên đầy đủ trong Erlang, không chỉ là "vỏ".Có REPL đầy đủ cho Erlang không?

Vì đây là ngôn ngữ động, không thể xác định các hàm được đặt tên trong trình thông dịch có chút thất vọng ... Tôi nghi ngờ rằng đó là do các đơn vị biên dịch (mô-đun) phải được biên dịch một cách rõ ràng , nhưng có thể một REPL hoạt động như một mô-đun năng động/có khả năng tái lập tồn tại?

+0

Vỏ Erlang là một điều thú vị: http://ferd.ca/repl-a-bit-more-and-less-than-that.html –

Trả lời

5

F = niềm vui() -> io: định dạng ("Hello World ~ n", []) kết thúc.

F().

+0

Chào mừng bạn đến với SO :) –

3

Câu trả lời ngắn gọn là NO, nó phù hợp với cách Erlang xử lý mã.

Máy ảo Erlang chỉ hỗ trợ mã được biên dịch. Đơn vị xử lý mã, bao gồm biên dịch, là mô-đun , bạn tải, xóa, cập nhật và xóa mô-đun. Vì vậy, nó không thực sự có thể kết hợp và biên dịch các hàm được biên dịch và biên dịch theo cách tương tự như bạn có thể trong lisp. Nó sẽ có thể mở rộng vỏ để cho phép xác định các hàm được giải nghĩa bên trong nó nhưng sau đó chỉ có thể gọi được từ bên trong trình thông dịch shell chứ không phải từ các mô-đun khác. Nó cũng sẽ có thể làm cho trình biên dịch biên dịch lại và tải lại "mô-đun trình bao" để các hàm bên trong nó có thể được gọi từ các mô-đun khác. Nhưng mô-đun này sẽ chỉ thực sự tồn tại trong lời kêu gọi của erlang.

Và tôi thành thật không thực sự thấy điểm khi biên dịch lại và tải lại mã luôn nhanh đến nỗi nó không phải là vấn đề. Nó sẽ là lực lượng của thói quen hơn là thuận tiện.

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