Nie jestem programistą Ruby. Jednak czuję, że powodem jest przejrzystość referencyjna.
Najbardziej idiomatyczne funkcje Clojure są czystymi funkcjami spełniającymi przejrzystość referencyjną. W wyniku tego osobiście znacznie łatwiej jest testować funkcje, które są niezależnymi autonomicznymi jednostkami i w pewnym stopniu zapewniają cel testów jednostkowych. Clojure jest językiem wysoce opiniotwórczym, woli, aby większość funkcji była bezpaństwowa. Wprowadza wyraźne rozróżnienie między kodem, w którym występują efekty uboczne, a stanami są utrzymywane za pomocą różnych innych opcji, takich jak var
, refs
, agents
, atoms
itp., Utrzymując większość kodu czysty, efekt uboczny wolny i przejrzystość referencyjna.
Uważam, że jakikolwiek kod utworzony wokół przejrzystych i bezpaństwowych funkcji będzie automatycznie korzystał z REPL-u, niezależnie od tego, czy będzie to Ruby, czy jakikolwiek inny język programowania.
Chociaż w większości praktycznych zastosowań, interfejs CLI dostarczony przez inny język będzie równie przydatny, jednak koncepcja Read, Eval, Print and Loop
nie jest taka sama w LISP jak w jakimkolwiek innym języku. Każdy język non-homoiconic
nie miałby fazy READ
i byłby to po prostu odczytanie reprezentacji tekstowej lub ciągu znaków, jednak w fazie LISP faza READ
faktycznie jest w stanie przeanalizować w dowolnej formie s-expression
, którą rzuca się na nią. Aby uzyskać więcej informacji na jej temat patrz poniżej 2 odpowiedzi:
Is Lisp the only language with REPL?
How is Lisp's read-eval-print loop different than Python's?
To miłe, ale to nie jest odpowiedź na pytanie. Nie twierdził ani nie zakładał, że to niemożliwe (wręcz przeciwnie). Zapytał, dlaczego nie jest bardziej popularny. – Ken
Może nie używają emacsa, albo są znacznie lepsi w Test Driven Development niż ja. – thattommyhall