2010-03-27 15 views
5

C'è un modo per avere un'interprete completo in Erlang, non solo un "guscio".Esiste un REPL completo per Erlang?

Poiché si tratta di un linguaggio dinamico, non è possibile definire le funzioni con nome nell'interprete un po 'deludente ... Sospetto che sia perché le unità di compilazione (moduli) devono essere compilate esplicitamente per la loro esecuzione dalla VM , ma forse esiste una REPL che funge da modulo dinamico/ricompilabile?

+0

La shell di Erlang è una cosa divertente: http://ferd.ca/repl-a-bit-more-and-less-than-that.html –

risposta

5

F = fun() -> io: formato ("Ciao Mondo ~ n", []) end.

F().

+0

Benvenuti in SO :) –

3

La risposta breve è NO, non rientra in modo che Erlang gestisce il codice.

Il VM Erlang supporta solo codice compilato. L'unità di gestione del codice, compresa la compilazione, è il modulo , si carica, elimina, aggiorna ed elimina i moduli. Quindi non è davvero possibile mescolare le funzioni interpretate e compilate nello stesso modo in cui è possibile usare il lisp. Sarebbe possibile estendere la shell per consentire la definizione di funzioni interpretate al suo interno, ma queste sarebbero solo richiamabili dall'interprete di shell e non da altri moduli. Sarebbe anche possibile far ricompilare la shell e ricaricare il "modulo shell" in modo che le funzioni al suo interno possano essere richiamate da altri moduli. Ma questo modulo in realtà esisterebbe solo all'interno di quell'invocazione di erlang.

E sinceramente non vedo il punto in cui la ricompilazione e il ricaricamento del codice sono sempre stati così rapidi che non è stato un problema. Sarebbe più una forza dell'abitudine che della convenienza.

Problemi correlati