clojure配置
1、转换clojure工程为eclipse工程
Install Counterclockwise plugin in Eclipse (from eclipse marketplace). This brings clojure and leiningen support to eclipse.
Add lein2-eclipse plugin to your project.clj :
:plugins [[lein2-eclipse "2.0.0"]]
Run following command inside the project directory :
需要先安装命令 brew install leiningen
然后执行命令 lein eclipse
This generates necessary project files.
具体是
Created .classpath
Created .project
Import the project into eclipse ( File -> Import -> General -> Existing project ).
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配置的更多相关文章
- java CMS gc解析
转载: http://www.blogjava.net/killme2008/archive/2009/09/22/295931.html CMS,全称Concurrent Low Pause ...
- windows下sublime2 clojure环境配置
最近在看<七周七并发模型>,其中函数式编程使用的是clojure来做说明,所以也想顺便学习一下clojure这种不同的编程方式语言.那么做开发肯定需要开发环境,第一步先下载clojure官 ...
- windows配置cider和clojure clj
windows配置cider和clojure clj */--> pre.src {background-color: #292b2e; color: #b2b2b2;} windows配置ci ...
- vim配置clojure开发环境备忘录
1 需要使用的插件 vundle 使用教程 http://www.cnblogs.com/respawn/archive/2012/08/21/2649483.html vim-fireplace h ...
- clojure开发环境配置git, vscode+Calva插件配置
万事开头难,全是犄角旮旯的细节. 1 安装lein 参见 https://www.cnblogs.com/xuanmanstein/p/10504401.html 2 创建工程 lein 参考http ...
- [Clojure] 包管理器leiningen配置国内镜像仓库
clojure用到的包管理站主要有两个,一个是解决java类库依赖的maven,一个是clojar 很多人都知道maven有阿里云提供的镜像站,可是clojar呢?幸运的是中科大为我们提供了cloja ...
- emacs 配置 clojure
安装JDK,Version >= 6.0 java -version 2 安装EMACS,Version>=24 在脚本~/.emacs.d/init.el中增加如下内容 (require ...
- Clojure的并行与并发
这次来聊聊clojure的并行与并发,如果你还不知clojure为何物,请翻翻我的上一篇推文.“并行”是指clojure对并行计算的支持(parallel computing),“并发”是其并发特性( ...
- Clojure上手
Clojure,这是什么鬼?一门基于JVM(现在也有基于.NET CLR的了:Clojure CLR) 的函数式编程语言.在JVM平台运行的时候,会被编译为JVM的字节码进行运算..为什么要学它?其设 ...
随机推荐
- [刘阳Java]_BeanNameViewResolver视图解析器_第8讲
BeanNameViewResolver:这个视图解析器跟XmlViewResolver有点类似,也是通过把返回的逻辑视图名称去匹配定义好的视图bean对象.它要求视图bean对象都定义在Spring ...
- python -- 面向对象编程(继承、重写)
一.继承 子类可以继承父类的所有公有成员,但不能直接访问父类的私有成员,只能通过父类的公有方法间接访问私有属性或私有方法. 如: class DerviedClassName(BaseClassNam ...
- Leetcode:530. 二叉搜索树的最小绝对差
Leetcode:530. 二叉搜索树的最小绝对差 Leetcode:530. 二叉搜索树的最小绝对差 Talk is cheap . Show me the code . /** * Definit ...
- DC-9靶机
仅供个人娱乐 靶机信息 下载地址:http://www.five86.com/downloads/DC-9.zip 一.主机扫描 二.信息收集 三.漏洞查找和利用 发现search的地方可能有sql注 ...
- switch-case例题
根据订单的状态码打印对应的汉字状态(使用switch-case)1-等待付款 2-等待发货 3-运输中 4-已签收 5-已取消 其它-无法追踪 var n='2' switch(n){ case 1: ...
- 在Linearlayout中新增ScrollView支持滚动
https://blog.csdn.net/wenzhi20102321/article/details/53491176 1.一般只需要在布局中加个ScrollView即可 2.如果布局中包含lis ...
- 攻防世界pwn高手区——pwn1
攻防世界 -- pwn1 攻防世界的一道pwn题,也有一段时间没有做pwn了,找了一道栈题热身,发现还是有些生疏了. 题目流程 拖入IDA中,题目流程如图所示,当v0为1时,存在栈溢出漏洞.在gdb中 ...
- MySQL Schema 与数据类型优化
良好的逻辑设计和物理设计是高性能的基石,应该根据系统将要执行的查询语句来设计schema,这往往需要权衡各种因素. 例如,反范式的设计可以加快某些类型的查询,但同时可能使另一些类型的查询变慢:添加计数 ...
- 全网最硬核Handler面试题深度解析
1.简述Handler的实现原理 Android 应用是通过消息驱动运行的,在 Android 中一切皆消息,包括触摸事件,视图的绘制.显示和刷新等等都是消息.Handler 是消息机制的上层接口,平 ...
- MySQL:获取元数据
元数据就是描述数据的数据,在很多时候我们都需要查询元数据 比如:想知道数据库有多少个表,表里面有哪些字段,数据表是什么时候创建的.在什么时候更新过等等 使用SQL注入的时候也得获取数据库的元数据才能进 ...