读取﹣求值﹣输出循环

维基百科,自由的百科全书
跳转至: 导航搜索

“读取-求值-输出”循环英语Read-Eval-Print Loop,简称REPL)是一个简单的,交互式的编程环境。这个词常常用于指代一个Lisp的交互式开发环境,但也能指代命令行的模式和例如 APL, BASIC, Clojure, F#, Haskell, J, Julia, Perl, PHP, Prolog, Python, R, Ruby, Scala, Smalltalk, Standard ML, Tcl, Javascript 这样的编程语言所拥有的类似的编程环境。这也被称做交互式顶层构件(interactive toplevel)。

“读入-求值-输出”循环 的名字来自于以下几个Lisp用来实现这种机制的内置函数:

  • 读入函数接收一个来自于用户的表达式,将其解析成数据结构并存入内存。例如,用户可能会输入一个s-表达式 (+ 1 2 3),这句活会被解析成一个包含四个元素的链表。
  • 求值函数 负责处理内部的数据结构并对其求值。在Lisp中,求一个以函数名开头的s-表达式意味着对接下来的参数调用那个函数。所以函数"+"被在参数1 2 3上调用,产生结果6
  • 输出函数接受求值结果,并呈现将其给用户。尽管当前的结果“6”并不具有复杂的格式,但如果是一个较为复杂的表达式,那么它将会被精心处理,以便于更方便地被理解。

REPL使得探索性的编程和调试更加便捷,因为“读取-求值-输出”循环通常会比经典的“编辑-编译-运行-调试”模式要更快。

优点[编辑]

REPL对于学习一门新的编程语言具有很大的帮助,因为它能立刻对初学者做出回应。许多工具集和编程语言使用REPL研究算法、进行调试,比如Matlab,Root,SciPy和IPython。Python的doctest模块能够通过捕捉自身REPL命令行的输出使测试代码更容易地进行。


实现[编辑]

主要的REPL编程语言环境[编辑]

带有REPL的应用程序[编辑]

外部链接[编辑]