`
shxiao
  • 浏览: 30486 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
阅读更多
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的`递归应用能够通过~和~@修饰来消除, ~产生值, ~@产生序列值
1
0
分享到:
评论

相关推荐

    Clojure学习——使用clojure jdbc操作mysql

    标题 "Clojure学习——使用clojure jdbc操作mysql" 指出的是一个关于使用Clojure编程语言通过Java Database Connectivity (JDBC) API来操作MySQL数据库的主题。Clojure是一种基于Lisp的函数式编程语言,它运行在Java...

    Clojure学习教程.pdf

    Clojure是一种现代的、通用的、高性能的Lisp语言方言,运行在Java虚拟机(JVM)上。它被设计成一种函数式编程语言,强调不可变数据和持久数据结构。Clojure适用于多范式编程,包括面向对象、命令式、函数式和逻辑...

    Clojure学习——持久化框架clj-record

    在IT行业中,Clojure是一种基于Lisp的函数式编程语言,它运行在Java虚拟机(JVM)上,充分利用了Java生态系统的优势。本篇文章将深入探讨Clojure中的持久化框架clj-record,以及如何利用它来高效地处理数据。源码...

    clojure-notes:Clojure学习笔记

    这篇“Clojure学习笔记”将带你深入了解Clojure的核心概念和实践技巧。 一、Clojure的基础 1. 数据结构:Clojure提供了丰富的内置数据结构,如列表(Lists)、向量(Vectors)、映射(Maps)和集合(Sets)。这些...

    菠菜源码JAVA-clojure-learning-notes:Clojure学习笔记

    Clojure学习笔记 为什么要学习Clojure 我写Java也有10多年了,其间用过Python、PHP、Ruby、Groovy、JS等动态语言。Java相对C、C++来说有明显的优势,可以说是一种更高级的语言,高级语言带来的优势是能用更少的代码...

    Java采购管理信息系统源码-Clojure-learning:Clojure学习

    【Java采购管理信息系统源码-Clojure-learning:Clojure学习】是一个开源项目,它结合了Java和Clojure两种编程语言,旨在提供一个完整的采购管理信息系统的解决方案。这个系统可能包括了供应商管理、采购订单处理、...

    ClojureFam:Clojure学习计划

    ” —共和国的柏拉图关于ClojureFam是一个学习程序,适合那些想要尝试使用Clojure(Script)和DataScript(这是当今存在的两种最强大,最优雅的技术)的人。 通过了解ClojureScript(一种功能不变的Lisp)和Data...

    4clojure:Clojure 研究站点 4 Repository 与 Clojure 的答案

    学习编程语言 Clojure 的站点这是一个Clojure 答案的存储库。 回答 test runner 进行测试,答案在所在的位置。测试运行器本身也是用 Clojure 编写的。 跑步 它需要 JVM 和 Leiningen 才能运行。运行时,它会对所有...

    clojure电子书

    《Clojure电子书》集合包含了三本关于Clojure编程的重要书籍和一个Leiningen的Windows安装程序,这对于学习和深入理解Clojure语言至关重要。Clojure是一种基于Lisp的函数式编程语言,它运行在Java虚拟机(JVM)上,...

    sicp-clojure:在 Clojure 中解决的 SICP 练习

    "sicp-clojure" 项目则是将 SICP 的练习用 Clojure 语言进行了实现,为学习者提供了从不同角度理解和应用 Lisp 风格编程的良好资源。 在这个项目中,你可以找到一系列 Clojure 代码,它们对应于 SICP 教程中的各个...

    Clojure编程乐趣]+clojure_programming.pdf

    在“Clojure编程乐趣”这本书中,你将学习到如何使用Clojure进行函数式编程,如何利用Clojure的强大工具处理数据,以及如何构建并发和分布式系统。此外,书中可能还会介绍Clojure社区的一些最佳实践和常用库,例如...

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

    - **在线论坛和社区**: 学习者可以通过参与Clojure的在线社区,如Clojure用户组、Stack Overflow等获取帮助和支持。 - **书籍**: 有许多优秀的书籍可以帮助深入理解Clojure的语言特性和最佳实践,如《Clojure in ...

    orlycljprogramming:用于跟踪Clojure学习的存储库

    Clojure库旨在...好的,这取决于您。 用法 整我 执照 版权所有:copyright:2020 FIXME 该程序和随附的材料根据Eclipse Public License 2.0的条款提供,可从。 当满足Eclipse Public License v。2.0中规定的可用性...

    Practical Clojure.pdf

    作者在开始学习Clojure时,体会到了编程的乐趣,这种感觉只有在初次接触计算机并执行命令时才曾经有过。Clojure语言让程序员能够直接与程序沟通,无需经过模糊的间接层次,使得程序员感觉自己真正控制了程序。 ...

    Clojure Data Analysis Cookbook

    - **机器学习基础**:介绍如何使用 Clojure 实现简单的机器学习算法,如线性回归、决策树等。 3. **实践篇**:通过具体的项目案例来巩固前面所学的知识。 - **文本分析**:使用自然语言处理技术进行文本挖掘,如...

    clojure1.3.0及资料

    在这个压缩包文件中,包含了一些关于Clojure的重要资源,特别是对于学习和理解Clojure 1.3.0版本非常有帮助。 1. **《Programming Clojure》**:这本书由Stuart Halloway和Aaron Bedra编写,是Clojure编程的经典...

Global site tag (gtag.js) - Google Analytics