Non sono uno sviluppatore di Ruby. Tuttavia ritengo che la ragione sia la trasparenza referenziale.
La maggior parte delle funzioni di Clojure idiomatiche sono funzioni puri che obbediscono alla trasparenza referenziale. Come risultato, personalmente trovo molto più facile testare funzioni che sono unità indipendenti indipendenti e in qualche modo forniscono lo scopo dei test unitari. Clojure essendo un linguaggio altamente supponente preferisce che la maggior parte delle funzioni siano apolidi. Rende chiara la distinzione tra codice in cui gli effetti collaterali si verificano e gli stati vengono mantenuti utilizzando varie altre alternative come var
, refs
, agents
, atoms
ecc, mantenendo la maggior parte del codice pulito, privo di effetti collaterali e referenziale trasparente.
Ritengo che qualsiasi codice strutturato attorno a funzioni referenzialmente trasparenti e senza stato si presti automaticamente a beneficiare del REPL sia che si tratti in Ruby o in qualsiasi altro linguaggio di programmazione.
Sebbene per la maggior parte degli scopi pratici, la CLI fornita da un'altra lingua sarebbe ugualmente utile, tuttavia il concetto di Read, Eval, Print and Loop
non è lo stesso in LISP come in qualsiasi altra lingua. Qualsiasi lingua non-homoiconic
non avrebbe una fase READ
e sarebbe solo leggendo la rappresentazione testuale o una stringa, tuttavia in LISP la fase READ
è effettivamente in grado di analizzare in qualsiasi forma di s-expression
che si lancia a esso. Per ulteriori informazioni su di esso si riferiscono al di sotto dei 2 risposte:
Is Lisp the only language with REPL?
How is Lisp's read-eval-print loop different than Python's?
fonte
2016-08-22 20:54:35
Questo è pulito, ma non risponde alla domanda. Non ha preteso o supposto che fosse impossibile (anzi, proprio il contrario). Ha chiesto perché non era più popolare. – Ken
Forse non usano emacs, o sono molto meglio a Test Driven Development di me. – thattommyhall