Common Lisp

从内到外可扩展

Lisp 的独特之处之一在于其设计是为演化而设的。随着新抽象的普及(例如面向对象编程),实现它们在 Lisp 中总容易得多。就像 DNA 一样,这种语言不会过时。

保罗·格雷厄姆,《ANSI Common Lisp

SxQL 示例,一个基于宏的 SQL DSL

(select (:title :author :year)
  (from :books)
  (where (:and (:>= :year 1995)
               (:< :year 2010)))
  (order-by (:desc :year)))

⇒ ((:title "Practical Common Lisp"
    :author "Peter Seibel"
    :year 2005)
   (:title "ANSI Common Lisp"
    :author "Paul Graham"
    :year 1995))

成熟稳定

一个全面的标准提供了一个坚如磐石的基础,你可以放心地在其上构建。你十年后不会重新发明同样的老轮子。

函数式

函数是一等对象:你可以传递它们、存储它们、动态调用它们。通过构成小型的函数式构建模块来构建你的应用程序。
(reduce #'-
        (reverse (list 1 2 3)))
⇒ 0

(mapcar #'string-downcase
        (list "Hello" "world!"))
=> ("hello" "world!")

面向对象

使用 Common Lisp 对象系统构建可重用和可扩展的类层次结构。在将语言适应你的问题域时,设计模式消失了
(defclass book ()
  ((title :reader book-title
          :initarg :title)
   (author :reader book-author
           :initarg :author))
  (:documentation "Describes a book."))

(make-instance 'book
               :title "ANSI Common Lisp"
               :author "Paul Graham")

快速

使用Woo(一个用纯 Common Lisp 编写的 HTTP 服务器)的每秒请求。

很棒的工具

SLIME是一个利用 Common Lisp 和 Emacs 扩展性的 IDE,提供了一个领先于其他任何工具的开发环境。

你可以抛弃编写-编译-调试这一循环。一切都具有交互性:在编写时在 REPL 上试用你的代码,一个强大的调试器让你检查活动值树,或者回溯堆栈来撤销异常。

查看更多成功案例
从这里开始