在编程中使用交互式Shell(REPL)

Clojure:
在编程中使用交互式Shell(REPL)

如何操作:

从启动REPL开始:

user=> (println "Hello, REPL!")
Hello, REPL!
nil

定义一个函数并尝试使用它:

user=> (defn greet [name] (str "Hello, " name "!"))
#'user/greet
user=> (greet "Clojure 程序员")
"Hello, Clojure 程序员!"

用数据结构进行实验:

user=> (def my-map {:a 1 :b 2})
#'user/my-map
user=> (assoc my-map :c 3)
{:a 1, :b 2, :c 3}

深入探讨

REPL是Lisp家族交互式开发哲学的关键,而Clojure,一个现代Lisp方言,充分利用了这一工具。它可以追溯到20世纪50年代后期的首个Lisp REPL。其他语言的替代品包括Python的解释器和Node.js的控制台,但Clojure的REPL具有一流的地位,并且是工作流程的不可分割的部分。

Clojure REPL会话可以集成到各种环境中,如命令行、IDE(例如IntelliJ中的Cursive,或Emacs中的CIDER),或基于浏览器的工具,如Nightcode。更深层次来说,REPL使开发人员能够在运行时操纵语言构造,并在各种转换中携带状态,通常导致探索性编程和更健壮的代码。

REPL的功能在如lein replclj这样的工具上体现得淋漓尽致,这些工具允许依赖管理、各种插件和项目特定的自定义,导致一个更高效和灵活的开发过程。

另请参阅

  • 官方Clojure网站上的REPL指南:https://clojure.org/guides/repl/introduction
  • Rich Hickey关于REPL驱动开发的讲话:https://www.youtube.com/watch?v=Qx0-pViyIDU
  • 实用Clojure:使用REPL进行迭代开发:http://practicalclj.blogspot.com/2009/10/using-clojure-repl.html