clisp, scheme 和 clojure 初学习
clisp, scheme和clojure 初学习
1 clojure
"clojure绝对会成为你的编程工具箱里的终极武器"
"其他语言可能只是工具,但 Clojure 才是少见的真正揭示编程之美、令你无条件入迷的那种东西。"
有时候我们需要一种粘合剂,它本身并不需要提供庞大的功能,但是能够很容易地调用已经存在的类库。我们自然联想到微软的COM和JavaScript脚本这样的东西,的确和这个很类似,但是是一个更强大的脚本,虽然它类似脚本,但其实是很高级的语言,它运行在JVM之上,可以调用Java、C、C#写的类库。它具有良好的结构、语法和平缓的学习曲线——让我们欢迎clojure出场(雷鸣般的掌声......)。
clojure属于lisp家族的一种,lisp是一种古老的语言,很多现代语言都借鉴了lisp的思想。废话少说,直接说怎么用吧。到下面的网站下载:
http://repo1.maven.org/maven2/org/clojure/clojure/1.5.1/clojure-1.5.1.zip
解压到/usr/local/下(也可以解压到任何你喜欢的路径下面),修改/etc/profile文件,在最后面增加的几行,增加之后的样子如下:
...... export CLOJURE_HOME=/usr/local/clojure-1.5.1 export JAVA_HOME=/usr/local/java/jdk1.6.0_45 export MAVEN_HOME=/usr/local/apache-maven-3.0.5 export ANT_HOME=/usr/local/apache-ant-1.8.4 export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$MAVEN_HOME/bin:$ANT_HOME/bin export CLASSPATH=.$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLOJURE_HOME/clojure-1.5.1.jar:$CLOJURE_HOME/clojure-1.5.1-slim.jar
打开一个终端,输入:
# 使上面的配置生效
$ source /etc/profile
# 启动一个clojure的repl(可以理解为命令行工具)
$ java clojure.main
显示:
clojure 1.5.1
user =>
下面就可以输入lisp代码进行编程和测试了。
user => (+ 1 2)
3
user =>
今天,我们不但请到了clojure先生,还有它的夫人——leiningen女士。俗话说,一个成功的男人背后必然有一个默默奉献的女士,也许我这么比喻并不恰当,但是,相当于ant或maven之于Java,leiningen就是给clojure服务的。用它可以创建、构建、发布clojure工程。好吧,它的安装更简单,前提是clojure正确安装并配置:
$ sudo apt-get install leiningen
然后打开终端,输入:
$ lein repl
显示:
REPL started; server listening on localhost port 32132
user=>
$ lein new NAME # generate a new project skeleton $ lein test [TESTS] # run the tests in the TESTS namespaces, or all tests $ lein repl # launch an interactive REPL session and socket server $ lein jar # package up the whole project as a .jar file $ lein install [NAME VERSION] # install a project
关于详细的clojure和leiningen的介绍超出本文的范围,请参考下面的链接和有关书籍:
2 clisp
clisp 安装:
$ sudo apt-get install clisp
clisp 测试:
$ clisp
$ (+ 1 2)
$ (quit)
3 scheme
racket (scheme) 安装:
$ sudo apt-get install racket
clisp, scheme 和 clojure 初学习的更多相关文章
- c# window服务-初学习
window服务-初学习 一.工具: VS2015+NET Framework4.5. 二.操作: 1.新建windows服务的项目: 2.修改windows服务相关内容: 3.预览windows服务 ...
- Python初学习:简单的练习题
Python初学习 一些见到那的练习题: 初级难度 设计一重量转换器,输入以g为单位的数字后,返回换算结果以Kg为单位的结果 中级难度 设计一个求直角三角形斜边长的函数,(以两个直角边为参数,求最长边 ...
- Swift初学习
距离swift发布10天了,也简单看了一下swift的语法,个人感觉相对于object-c很是简单明了.Swift的出现并不能说明iOS开发简单了很多,有可能会变得复杂,你需要学习两门编程语言,因为在 ...
- Clojure语法学习-循环
do和块语句 在Scala中,花括号{}括起来的语句构成一个block,它的值就是最后一个语句的值. scala> val a = { | println("a") | 1} ...
- Jquery 插件初学习
参考文章:插件开发精品教程,让你的jQuery提升一个台阶 刚刚学了一下jquery的插件插件开发,写个demo记录.练习一下.毕竟,输出才是最好的学习. 这个也不过是最基础的一个插件写法,只是,自己 ...
- requests库写接口测试框架初学习
学习网址: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dscpm/ff75b907-415d-4220-89 ...
- 2018.2.21 Python 初学习
折腾了一天,一直在用CMD学习Python写Hello World.偶然间发现可以用Pycharm.也算是给后面想学习的人提个醒,方便省事许多. format()使用方法. age = 20name ...
- 偶值得纪念的一天-初学习C#
今天好悲催啊,竟然生病啦,不过一切还好! 今天我们在云和数据学习的第二天,上午没有听课,似乎学习了变量的定义以及命名方法,还有变量类型的显隐式转换:我感觉这些还是在之前看书知道啦把,因此看啦看老师做的 ...
- day 41 数据库初学习
前情提要: 数据库初识别 一:数据库的介绍 https://github.com/Endless-Clould/homework/blob/master/student_system.sql 数据再这 ...
随机推荐
- Spring-cloud (七)自定义HystrixCommand
前提 1.在继续学习Hystrix之前,向关注本人博客的各位致歉 由于之前的项目起名以及服务之间的名称不是很规范,所以我修改了这些名称方便后来的代码管理,这些代码可以在本人github中找到,这里贴出 ...
- Java 零散笔记
运算符: 整数被0除将会产生一个异常,而浮点数被0除会得到无穷大或NaN结果. 二元运算符: 如果运算符得到一个值,其类型与左侧操作数的类型不用,就会发生强制类型转换. int x = 0; x += ...
- 使用GDAL进行RPC坐标转换
使用GDAL进行RPC坐标转换 对于高分辨率遥感卫星数据而言,目前几乎都提供了有理函数模型(RFM)来进行图像校正(SPOT系列提供了有理函数模型之外还提供了严格轨道模型).对遥感影像进行校正目前最常 ...
- 给PLSQL插上飞翔的翅膀-PLSQL优化
60-80% of database performance issues are related to poorly performing SQL,60-80%的数据库性能问题要归结于生产中糟糕的S ...
- RxJava(10-操作符原理&自定义操作符)
转载请标明出处: http://blog.csdn.net/xmxkf/article/details/51791120 本文出自:[openXu的博客] 目录: 自定义创建操作符 数据序列操作符li ...
- 在Activity,Service,Window中监听Home键和返回键的一些思考,如何把事件传递出来的做法!
在Activity,Service,Window中监听Home键和返回键的一些思考,如何把事件传递出来的做法! 其实像按键的监听,我相信很多人都很熟练了,我肯定也不会说这些基础的东西,所以,前期,还是 ...
- FFmpeg源代码简单分析:av_write_trailer()
===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...
- mac OS下在控制台中发送外部邮件
1 首先安装mailx: sudo port install mailx 2 然后设置别名 : alias mailx=/opt/local/bin/mailx alias mail=/opt/loc ...
- C++对象模型的那些事儿之五:NRV优化和初始化列表
前言 在C++对象模型的那些事儿之四:拷贝构造函数中提到如果将一个对象作为函数参数或者返回值的时候,会调用拷贝构造函数,编译器是如何处理这些步骤,又会对其做哪些优化呢?本篇博客就为他家介绍一个编译器的 ...
- Android开发优化之——使用软引用和弱引用
Java从JDK1.2版本开始,就把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用和虚引用. 这里重点介绍一下软引用和弱引用. 如果 ...