Date
May. 19th, 2024
 
2024年 4月 12日

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
I'm looking for a SOFTWARE PROJECT DIRECTOR / SOFTWARE R&D DIRECTOR position in a fresh and dynamic company. I would like to gain the right experience and extend my skills while working in great teams and big projects.
Feel free to contact me.
For more information, please view online résumé or download PDF
本人正在寻求任职 软件项目经理 / 软件技术经理 岗位的机会, 希望加⼊某个新鲜⽽充满活⼒的公司。
如有意向请随时 与我联系
更多信息请 查阅在线简历下载 PDF