`
linkerlin
  • 浏览: 35038 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Clojure 的量子特性

阅读更多

(defprotocol X (cat [this other]))

定义一个协议,这个和Objective-C的协议很像。不同于Java的接口。
user=> X
{:on-interface user.X, :on user.X, :sigs {:cat {:doc nil, :arglists ([this other]), :name cat}}, :var #'user/X, :method-map {:cat :cat}, :method-builders {#'user/cat #<user$eval12$fn__13 user$eval12$fn__13@13cc0a7f>}}

user=> (extend-type String X (cat [this other] (.concat this other)))
这个就很ObjC的风格。把一个函数作为一个类型在一个协议下的实现,定义出来。
user=> (cat "AA" "BB")
"AABB"
就思想上来说,FP和OO是反的。一个以函数为核心,一个以数据为核心。
而Lisp,则是分两个层面,就基础层,一切都属数据。但是在抽象层,一切都是函数和函数调用了。
或者可以这么说,Lisp有类似量子光学里面的波粒二相性的特性,“动”——是 函数调用,“静”——是 数据。

 

分享到:
评论

相关推荐

    Clojure入门教程- Clojure – Functional Programming for the JVM中文版

    - **书籍**: 有许多优秀的书籍可以帮助深入理解Clojure的语言特性和最佳实践,如《Clojure in Action》和《Programming Clojure》等。 #### 七、案例分析与实践 - **Clojure项目实战**: 通过实际项目来学习Clojure...

    Programming Clojure 英文电子版

    **Clojure**是一种基于Java虚拟机(JVM)的动态语言,它结合了多种优秀特性,使其成为一种非常有吸引力的选择。以下是书中提到的一些关键特性: 1. **Elegance**: Clojure的设计简洁明了,使得开发者能够专注于问题...

    Practical Clojure.pdf

    Clojure语言中的并发性是一个重要特性,它允许开发者更轻松地处理并发任务,而不用担心线程管理和其他并发问题。这是因为Clojure内部实现了高级别的并发抽象,例如软件事务内存(STM)和其他并发原语。 不可变性是...

    clojure电子书

    此外,书中还深入探讨了Clojure的高级特性,如宏、动态绑定以及与Java平台的集成。中文版的《Clojure编程》则为中文读者提供了更便捷的学习途径,帮助理解和应用Clojure的精髓。 其次,《Programming Clojure》由...

    Clojure Handbook(2012.11.1)

    Clojure Handbook是一份关于Clojure编程语言的学习笔记,旨在为读者提供一个方便的备查材料,以加深对Clojure语言特性的理解和记忆。 首先,Clojure作为Lisp语言家族的一员,具有一些独特的特性。Lisp语言以其极简...

    programming-clojure-3rd

    这本书涵盖了从基础语法到高级特性的广泛内容,对于想要学习或提升Clojure技能的程序员来说,是一份宝贵的资源。 首先,Clojure的核心理念是简洁、并发和持久化数据结构。书中详细介绍了Clojure的语法特性,如S...

    Clojure编程乐趣]+clojure_programming.pdf

    在这个“Clojure编程乐趣”中,我们将深入探讨Clojure的核心概念和特性。 首先,Clojure强调函数式编程,这意味着程序被视为计算的纯函数,没有副作用。这种编程范式鼓励使用不可变数据结构,如 Persistent Data ...

    Clojure Programming

    Stuart通过精心设计的示例展示了Clojure的特性,并解释了这些特性如何相互配合,形成强大的工具箱。 除了作为学习Clojure的参考书籍,这本书还确立了Clojure在实际开发中的地位。Stuart Sierra,clojure-contrib库...

    clojure1.3.0及资料

    Clojure因其并发和函数式特性,常被用来编写Storm的拓扑结构。这个文件可能是Storm的Clojure实现或相关工具,对于进行大规模实时数据处理的开发者来说很有价值。 综上所述,这个压缩包包含了一系列资源,可以帮助...

    the joy of clojure.pdf

    本书的核心在于介绍Clojure的哲学、动机以及语义特性,帮助读者不仅掌握这门语言,更重要的是理解其背后的思想。 **Clojure哲学**主要体现在以下几个方面: 1. **简洁性与清晰度**:Clojure设计之初就追求代码的...

    Clojure可选类型系统TypedClojure.zip

    主要特性:从 Java 中保护你的 Clojure 程序,进行安全的互操作,正确的使用外部 Java 库。Typed Clojure 支持关键字映射的使用,类型检测器中包含有用的映射操作,包括关键字查找,添加或者移除关键字,合并映射...

    clojure1.4包

    Clojure 1.4 是一个基于 JVM 的 Lisp 风格的编程语言,由 Rich Hickey 创建,旨在提供一种简洁、高效且具有并发特性的现代编程工具。它结合了函数式编程的理念,使得 Clojure 在处理大数据、分布式计算以及云计算等...

    Clojure入门教程.pdf

    #### 四、Clojure特性和工具 - **REPL(Read-Eval-Print Loop)**:提供了一个交互式的环境,可以即时编写和测试Clojure代码。 - **宏**:Clojure支持宏,这是一种强大的元编程工具,允许程序员定义新的语法结构。 -...

    Clojure调用Java类的一个实例

    这是通过Java Interop特性实现的,它允许Clojure代码直接引用Java类、方法和字段。例如,如果你有一个名为`com.example.MyClass`的Java类,你可以这样在Clojure中引用它: ```clojure (def my-class (java.lang....

    Clojure电子书合集1(12本)

    [2009] Programming Clojure.(Stuart Halloway).[1934356336].pdf [2010] Functional Programming with Clojure - Simple Concurrency on the JVM.(Tim Berglund, Matthew McCullough).[193650202X].pdf [2010] ...

Global site tag (gtag.js) - Google Analytics