Я не разработчик Ruby. Однако я чувствую, что причина в ссылочной прозрачности.
Большинство идиоматических функций Clojure являются чистыми функциями, подчиняющимися ссылочной прозрачности. В результате я лично нахожу, что намного проще тестировать функции, которые являются независимыми автономными модулями, и они в некоторой степени обеспечивают цель модульных тестов. Clojure, будучи языком с высокой степенью самоуверенности, предпочитает, чтобы большинство функций не имели состояния. Это делает четкое различие между кодом, в котором происходят побочные эффекты, и состояниями, поддерживаемыми с использованием различных других альтернатив, таких как var
, refs
, agents
, atoms
и т. Д., Сохраняя большую часть вашего кода чистым, побочные эффекты свободны и ссылочно прозрачный.
Я чувствую, что любой код, структурированный вокруг ссылочно-прозрачных функций и функций без состояния, автоматически получит выгоду от REPL, будь то на Ruby или любом другом языке программирования.
Хотя для большинства практических целей CLI, предоставляемый другим языком, будет в равной степени полезен, однако концепция Read, Eval, Print and Loop
в LISP не такая, как в любом другом языке. Любой язык non-homoiconic
не будет иметь фазу READ
и будет просто читать текстовое представление или строку, однако в LISP фаза READ
фактически может анализировать в любой форме s-expression
, которую вы выбрасываете Это. Более подробную информацию об этом см. В следующих 2 ответах:
Является ли Лисп единственным языком с REPL?
Чем цикл чтения-eval-print отличается от цикла Python?