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的字节码进行运算..为什么要学它?其设 ...
随机推荐
- 手写系列-实现一个铂金段位的 React
一.前言 本文基于 https://pomb.us/build-your-own-react/ 实现简单版 React. 本文学习思路来自 卡颂-b站-React源码,你在第几层. 模拟的版本为 Re ...
- 单机版kafka的安装
简单记录单机版kafka的安装:JDK1.8(jdk-8u131-linux-x64.rpm)zookeeper (zookeeper-3.4.10.tar.gz)kafka (kafka_2.12- ...
- jdk源码阅读-Object类
native 关键字 private static native void registerNatives(); static { registerNatives(); } public final ...
- Java字节码增强技术
简单介绍下几种java字节码增强技术. ASM ASM是一个Java字节码操控框架,它能被用来动态生成类或者增强既有类的功能.ASM可以直接产生class文件,也可以在类被加载入Java虚拟机之前动态 ...
- shell脚本(12)-特殊变量介绍
一.特殊变量介绍: 1.$* :代表所有参数,其间隔为IFS内参数的第一个字元 2.$@ :与*星号类同,不同之处在于不参照IFS 3.$# :代表参数数量 4.$: 代表上一个指令的返回值 5.$- ...
- Orchestrator+Proxysql 实现自动导换+应用透明读写分离
前面一篇博客我介绍了如何通过Orachestrator+脚本实现自动导换. 这一章,我来演示一下如何通过Orchestrator+Proxysql 实现自动导换+应用透明读写分离 总体架构 可选架构1 ...
- springmvc学习指南 之---第27篇 spring如何实现servlet3.0无web.xml 配置servlet对象的
writedby 张艳涛 基于web.xml配置,有人说麻烦,tomcat给按照servlet3.0,实现了基于注解@WebServlet,有人说springmvc的springmvc.xml配置麻烦 ...
- C语言复习(一)
类型为void*的指针代表对象的地址,而不是类型 如果需要使用另一个源文件中定义的变量,那么只需要在定义变量前加上extern关键字 ex: extern int x;//x在其他文件中定义 左值表达 ...
- firewalld防火墙基础
目录 一.firewalld 概述 二.firewalld与iptables 的区别 三.firewalld 区域概念 四.Firewalld数据处理流程 五.Firewalld检查数据包的源地址的规 ...
- 优化SQL 查询性能
为什么查询会很慢 如果把查询看作是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.要优化查询,实际上是要优化其子任务,要么消除其中一些子任务,要么减少子任务的执行次数,要么让子任务运 ...