clojure - Clojure 表单是数据还是类型?

标签 clojure

我正在开始学习 clojure。主要来自 Java 和一些脚本语言,作为 clojure(以及所有函数式语言,我认为)的数据部分的代码并不那么清晰。

从书的第一页开始,我看到了表格。我发现它主要与数据相关,例如 #{1 2}。但在其他一些地方,我看到 Boolean 标记为 form

现在,我假设 falseBoolean 类型的一种形式,但我没有看到 type 被更多提及好几次了,所以我很困惑。

有人可以插入我理解表单的概念,并插入我理解代码作为语言的数据部分吗?

最佳答案

Clojure 具有表单,因为它是 Lisp

  • Clojure 表单是作为以下内容的一部分呈现的元素或数据结构 一个程序。
  • Clojure 和其他 Lisp 语言在这个意义上都有形式。
  • 除了 Lisp 之外,大多数编程语言都没有: 用于组成程序结构的数据与 native 数据完全不同 结构。
  • 函数式语言也不异常(exception)。例如,看看 ML家人。

evaluation 的规则告诉你表格是如何工作的。

  • 使用 native 数据结构来表达程序的返回 结构是你几乎可以编写操作表单的程序 就像编写任何其他类型一样容易。
  • 此类程序称为 macros .

例如,看看 the source for and 。在 Java 中你无法做到这一点。

<小时/>

This回答你关于 Lisps 的一般问题。

关于clojure - Clojure 表单是数据还是类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43291513/

相关文章:

json - 如何在 compojure 处理程序中获取 selflink?

clojure - 是否可以克隆多方法?

haskell - 这些用柯里化(Currying)和转换器实现的函数有什么区别?

clojure - "or"在 Clojure 中如何工作?

Clojure:如何在全局范围内启用规范断言?

clojure - Clojure 中的固定长度堆栈结构

json - 在clojure中访问POST json

clojure - 在理解自定义 core.logic 约束时需要澄清

macros - 有没有一种干净的方法可以将函数添加到动态创建的命名空间?

clojure - 如何在用户定义的命名空间中启动 REPL?