Date
Dec. 22nd, 2024
 
2024年 11月 22日

Post: Programming in Clojure 001 : 简介

Programming in Clojure 001 : 简介

Published 12:04 Apr 20, 2014.

Created by @ezra. Categorized in #Programming, and tagged as #Lisp.

Source format: Markdown

Table of Content

Clojure 是一种 Lisp 方言,属于函数式语言的范畴(主流的函数式语言有 Clojure , Common Lisp , Erlang , F# , Haskell , ML , OCaml , Scheme , Scala),这个系列的博客主要介绍 Clojure 的基础知识。

Lisp 被普遍认为是一种玩具语言的时候,Clojure 借助 Java Virtual Machine (JVM) 走上了不同的道路,成为一种动态类型的、可以与 Java 相互操作的语言。

关于 Clojure 与传统 Lisp 的差异,可以参阅 这里,如果你不喜欢 s-expressions,那么你应该考虑是否继续阅读这篇博客,因为这正是 Lisp 及其方言的主要特色之一。

public void hello(String name) {
    System.out.println("Hello, " + name);
}
(defn hello [name]
  (println "Hello," name))

此外,Clojure 还是一门开源语言,使用 EPL(Eclipse Public License) 发布。

Clojure 中,每一个操作都属于下列三种形式之一:

  • function

  • macro

  • special form

对于 functionmacro 来说,它们几乎都是用 Clojure 来实现的; 而 special form 并不是,它包括:

  • catch

  • def

  • do

  • dot(.)

  • finally

  • fn

  • if

  • let

  • loop

  • monitor-enter

  • monitor-exit

  • new

  • quote

  • recur

  • set!

  • throw

  • try

  • var

Haskell 类似,Clojure 中也大量应用延迟计算。懒惰序列 是一种集合,使得创建无限集合非常高效。

Clojure 代码的处理分为三个阶段:

  • 读入,读取 Clojure 源代码并且把代码转变成数据结构

  • 编译,数据结构被转化成 Java 字节码

  • 运行,执行字节码

Pinned Message
HOTODOGO
The Founder and CEO of Infeca Technology.
Developer, Designer, Blogger.
Big fan of Apple, Love of colour.
Feel free to contact me.
反曲点科技创始人和首席执行官。
开发、设计与写作皆为所长。
热爱苹果、钟情色彩。
随时恭候 垂询