clojure学习
clojure通过reader来读取字符流,根据不同的读形式来产生不同的数据结构。
reader forms
1: 标识符
标识符以非数字字符开始,可是包含数字在内的字符,还有*, +, !-,_和?. /用来分割命名空间,.表示类名修饰引用,标识符中包含.和/被称为被修饰过的, 以“:”开始的符号被保留。
标识符相当于变量,是对一种事务的命名抽象,通过标识符来引用这个对象。
从标识符的源码中可以看到, 标识符实现了IFn和Named接口, 标识符有所属的命名空间(Named), 引用符号是会在TR中寻找标识符的对象。
2: 常量:
字符串 "sss"
数字: 整数,浮点数和有理数
字符: \s eg: (str "ss" \newline)
nil: 表示什么都没有和空值,相当于null和false
布尔值: true false
关键字:像标识符除了(”:"开始, 不包含.和类名) { :name "s", :age 22}
3: 列表:
( a b c ) 常量列表'( 1 2 3)
4: 向量:
[ 1 2 3 ]
5: Map:
{ :s "s" :d 12 :f 3} 或 { :s "s", :d 12, :f 3}
6: 集合
#{ 1 2 3 } #{ :s :d }
宏符号:
宏符号是reader读取forms的快捷方式。宏字符不能用于标识符
1: Quote 引用(')
'form => (quote form)表示引用form, form可以为上面所有的form, 'd , '1 'nil
2: Character字符(\)
产生一个字符常量, \s
3注释 (;)
单行注释
4:Meta 元数据(^)
^form => (meta form) 查看对象的元数据
5: Deref 用引(@)
@form = ( deref form)解引用,取引用的值,相当于'的饭作用
6: Dispatch分派(#)
#“pattern" 正则表达式
#^设置元数据 标识符,列表,向量和字典有元数据 , 这个宏符号读取第一个map把他设置都后面的对象上。
#^String x, 表示 #^{:tag String} x, 用来存储类型信息
#’ var-quote
#'x = (var x)表示标识符本身
#()匿名函数 %n参数位置, %&表示剩余参数
#() = (fn [args] (...)) ( #(+ %1 %2) 1 2 )
语法语录 Syntax-quote( `note, ~Unquote, ~@Unquote-splicing)
除了标识符,列表,向量,字典 `s和‘s是相同的
对于标识符,`d 引用目前上下文中的标识符,产生一个修饰标识符, 如果标志没有命名空间并且以'#’结束,它引用一个相同的名字加_再加一个唯一id组
对于列表,向量,字典,`建立一个相应数据结构的模板,在这个模板内,没有修饰的forms就像·递归的应用,但是form的`递归应用能够通过~和~@修饰来消除, ~产生值, ~@产生序列值
分享到:
相关推荐
标题 "Clojure学习——使用clojure jdbc操作mysql" 指出的是一个关于使用Clojure编程语言通过Java Database Connectivity (JDBC) API来操作MySQL数据库的主题。Clojure是一种基于Lisp的函数式编程语言,它运行在Java...
Clojure是一种现代的、通用的、高性能的Lisp语言方言,运行在Java虚拟机(JVM)上。它被设计成一种函数式编程语言,强调不可变数据和持久数据结构。Clojure适用于多范式编程,包括面向对象、命令式、函数式和逻辑...
在IT行业中,Clojure是一种基于Lisp的函数式编程语言,它运行在Java虚拟机(JVM)上,充分利用了Java生态系统的优势。本篇文章将深入探讨Clojure中的持久化框架clj-record,以及如何利用它来高效地处理数据。源码...
这篇“Clojure学习笔记”将带你深入了解Clojure的核心概念和实践技巧。 一、Clojure的基础 1. 数据结构:Clojure提供了丰富的内置数据结构,如列表(Lists)、向量(Vectors)、映射(Maps)和集合(Sets)。这些...
Clojure学习笔记 为什么要学习Clojure 我写Java也有10多年了,其间用过Python、PHP、Ruby、Groovy、JS等动态语言。Java相对C、C++来说有明显的优势,可以说是一种更高级的语言,高级语言带来的优势是能用更少的代码...
【Java采购管理信息系统源码-Clojure-learning:Clojure学习】是一个开源项目,它结合了Java和Clojure两种编程语言,旨在提供一个完整的采购管理信息系统的解决方案。这个系统可能包括了供应商管理、采购订单处理、...
” —共和国的柏拉图关于ClojureFam是一个学习程序,适合那些想要尝试使用Clojure(Script)和DataScript(这是当今存在的两种最强大,最优雅的技术)的人。 通过了解ClojureScript(一种功能不变的Lisp)和Data...
学习编程语言 Clojure 的站点这是一个Clojure 答案的存储库。 回答 test runner 进行测试,答案在所在的位置。测试运行器本身也是用 Clojure 编写的。 跑步 它需要 JVM 和 Leiningen 才能运行。运行时,它会对所有...
《Clojure电子书》集合包含了三本关于Clojure编程的重要书籍和一个Leiningen的Windows安装程序,这对于学习和深入理解Clojure语言至关重要。Clojure是一种基于Lisp的函数式编程语言,它运行在Java虚拟机(JVM)上,...
"sicp-clojure" 项目则是将 SICP 的练习用 Clojure 语言进行了实现,为学习者提供了从不同角度理解和应用 Lisp 风格编程的良好资源。 在这个项目中,你可以找到一系列 Clojure 代码,它们对应于 SICP 教程中的各个...
在“Clojure编程乐趣”这本书中,你将学习到如何使用Clojure进行函数式编程,如何利用Clojure的强大工具处理数据,以及如何构建并发和分布式系统。此外,书中可能还会介绍Clojure社区的一些最佳实践和常用库,例如...
- **在线论坛和社区**: 学习者可以通过参与Clojure的在线社区,如Clojure用户组、Stack Overflow等获取帮助和支持。 - **书籍**: 有许多优秀的书籍可以帮助深入理解Clojure的语言特性和最佳实践,如《Clojure in ...
Clojure库旨在...好的,这取决于您。 用法 整我 执照 版权所有:copyright:2020 FIXME 该程序和随附的材料根据Eclipse Public License 2.0的条款提供,可从。 当满足Eclipse Public License v。2.0中规定的可用性...
作者在开始学习Clojure时,体会到了编程的乐趣,这种感觉只有在初次接触计算机并执行命令时才曾经有过。Clojure语言让程序员能够直接与程序沟通,无需经过模糊的间接层次,使得程序员感觉自己真正控制了程序。 ...
- **机器学习基础**:介绍如何使用 Clojure 实现简单的机器学习算法,如线性回归、决策树等。 3. **实践篇**:通过具体的项目案例来巩固前面所学的知识。 - **文本分析**:使用自然语言处理技术进行文本挖掘,如...
在这个压缩包文件中,包含了一些关于Clojure的重要资源,特别是对于学习和理解Clojure 1.3.0版本非常有帮助。 1. **《Programming Clojure》**:这本书由Stuart Halloway和Aaron Bedra编写,是Clojure编程的经典...