1、转换clojure工程为eclipse工程

  1. Install Counterclockwise plugin in Eclipse (from eclipse marketplace). This brings clojure and leiningen support to eclipse.

  2. Add lein2-eclipse plugin to your project.clj :

    :plugins [[lein2-eclipse "2.0.0"]]

  3. Run following command inside the project directory :

需要先安装命令 brew install leiningen

然后执行命令    lein eclipse

This generates necessary project files.

具体是

Created .classpath
Created .project

  1. Import the project into eclipse ( File -> Import -> General -> Existing project ).

  2. Right click on the project in eclipse then "Configure > Convert to leiningen project

2、clojure文件

http://www.liaoxuefeng.com/article/0014171500694729a42a2c8b7f245e0bd54612c88d78a03000

3 、clojure----宏语法

首先说明引号  quoting的情况,quoting分为两种场景,在函数内或者在 macro内,作用影响在两个时期   宏扩展时期,编译时期

例子,下面函数功能如果 expr为真返回nil,否则执行语句form

3.1、问题1  quoting的作用域 问题,如果作用于单个关键字或者()

(defmacro unless [expr form]

( list 'if expr nil form))

by quoting (,you prevent clojure form directly evaluating ( at macro expansion time

还有注意 quote的作用范围,上例作用于一个关键字if,只会影响这个关键字,如果作用于(,那么会影响整个()

(defmacro unless-v2 [expr form]

'(if expr nil form z))

这个时候 ' 作用于整个() ,所以括号内你可以乱写东西,那些不是参数的东西你都可以写,比如上例中的z

3.2、逃脱大范围作用域

当' 作用于括号()的时候,这个作用范围比较大,所以这个时候有个需求,就是希望这个大范围内的一些局部不受引号的控制,这个时候解决办法就是   ` +  ~,

~就是那些不受影响的变量

例如,原始的情况

>>(defmacro chain-v1 [fun var]

'(fun var))                           ----------------------所以这个时候也是看到' quoting如果作用范围太大也没什么实际效果了

希望逃脱作用域

>>(defmacro chain-v2 [fun var]

`(~fun ~var 1))

>>想看效果的话就是看宏扩展

(macroexpand '(chain-v1 inc 5))

得到的结果是

(fun var)

然后另一个执行

(macroexpand '(chain-v2 inc 5))

结果是

(inc 5)

clojure配置的更多相关文章

  1. java CMS gc解析

    转载: http://www.blogjava.net/killme2008/archive/2009/09/22/295931.html     CMS,全称Concurrent Low Pause ...

  2. windows下sublime2 clojure环境配置

    最近在看<七周七并发模型>,其中函数式编程使用的是clojure来做说明,所以也想顺便学习一下clojure这种不同的编程方式语言.那么做开发肯定需要开发环境,第一步先下载clojure官 ...

  3. windows配置cider和clojure clj

    windows配置cider和clojure clj */--> pre.src {background-color: #292b2e; color: #b2b2b2;} windows配置ci ...

  4. vim配置clojure开发环境备忘录

    1 需要使用的插件 vundle 使用教程 http://www.cnblogs.com/respawn/archive/2012/08/21/2649483.html vim-fireplace h ...

  5. clojure开发环境配置git, vscode+Calva插件配置

    万事开头难,全是犄角旮旯的细节. 1 安装lein 参见 https://www.cnblogs.com/xuanmanstein/p/10504401.html 2 创建工程 lein 参考http ...

  6. [Clojure] 包管理器leiningen配置国内镜像仓库

    clojure用到的包管理站主要有两个,一个是解决java类库依赖的maven,一个是clojar 很多人都知道maven有阿里云提供的镜像站,可是clojar呢?幸运的是中科大为我们提供了cloja ...

  7. emacs 配置 clojure

    安装JDK,Version >= 6.0 java -version 2 安装EMACS,Version>=24 在脚本~/.emacs.d/init.el中增加如下内容 (require ...

  8. Clojure的并行与并发

    这次来聊聊clojure的并行与并发,如果你还不知clojure为何物,请翻翻我的上一篇推文.“并行”是指clojure对并行计算的支持(parallel computing),“并发”是其并发特性( ...

  9. Clojure上手

    Clojure,这是什么鬼?一门基于JVM(现在也有基于.NET CLR的了:Clojure CLR) 的函数式编程语言.在JVM平台运行的时候,会被编译为JVM的字节码进行运算..为什么要学它?其设 ...

随机推荐

  1. 查看JVM默认参数及微调JVM启动参数

    目录 查看某个JVM进程堆内存信息 微调JVM启动参数 查看JVM的一些默认参数 参考廖雪峰老师的这篇 JVM调优的正确姿势: https://www.liaoxuefeng.com/article/ ...

  2. CSS居中对齐终极指南

    本文首发于我的公众号:前端新世界 欢迎关注 本文将讨论可用于居中对齐元素的6种CSS技术(按照最佳实践排序),以及每一种技术最适合应用的场景.这里,居中对齐指的是将元素放置在其父元素的水平和垂直中心. ...

  3. java内存模型——重排序

    线程安全问题概括来说表现为三个方面:原子性,可见性和有序性. 在多核处理器的环境下:编译器可能改变两个操作的先后顺序:处理器可能不是完全依照程序的目标代码所指定的顺序执行命令:一个处理器执行的多个操作 ...

  4. elastic query match_all 数据目标超过10000条出错 Result window is too large

    起因 elastic做文本索引,match_all目标索引超过10000条时,出错 { "error": { "root_cause": [ { "t ...

  5. 使用分区助手转移windows 10系统出现黑屏boot manager报错问题。

    问题原因: 在使用分区助手迁移windows 10到ssd中,设置完boot管理器后,出现黑屏问题, 经过长时间的搜索,发现在迁移系统的时候,只迁移了C盘的系统,没有连同msr引导 文件一同传过去,会 ...

  6. Java预科:DOS命令及电脑快捷键

    Java预科:DOS命令及电脑快捷键 1.快捷键 常用快捷键 a/t +f4关闭窗口 cmd窗口打开快捷方式 1.开始+系统+命令提示符 2.win+r 输入cmd 3.在任意文件夹下面,按住shif ...

  7. OpenGL学习笔记(五)变换

    目录 变换 向量 向量的运算 向量与标量运算 向量取反 向量加减 求向量长度 向量的单位化 向量相乘 点乘(Dot Product) 叉乘 矩阵 矩阵的加减 矩阵的数乘 矩阵相乘 矩阵与向量相乘 与单 ...

  8. ABC133简要题解

    A T or T TOT 模拟即可 B Good Distance \(O(n^2)\) 模拟. C Remainder Minimization 2019 把 \(r\) 变成 \(l+2019\) ...

  9. RHCSA_DAY12

    Linux软件包的分类 inghu 源码包 二进制包(RPM包) 源码包特点 源码包缺点:安装过程麻烦,需要用户手动编译,需要手动解决软件包的依赖关系 源码包优点:软件源代码开放,允许用户二次开发,安 ...

  10. Android NDK 直播推流与引流

    本篇介绍一下直播技术中推流与引流的简单实现. 1.流媒体服务器测试 首先利用快直播 app (其他支持 RTMP 推流与引流的 app 亦可)和 ffplay.exe 对流媒体服务器进行测试. 快直播 ...