clisp, scheme 和 clojure 初学习

时间:2023-02-19 08:08:03

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的介绍超出本文的范围,请参考下面的链接和有关书籍:

http://xumingming.sinaapp.com/302/clojure-functional-programming-for-the-jvm-clojure-tutorial/#introduction

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 初学习的更多相关文章

  1. c# window服务-初学习

    window服务-初学习 一.工具: VS2015+NET Framework4.5. 二.操作: 1.新建windows服务的项目: 2.修改windows服务相关内容: 3.预览windows服务 ...

  2. Python初学习:简单的练习题

    Python初学习 一些见到那的练习题: 初级难度 设计一重量转换器,输入以g为单位的数字后,返回换算结果以Kg为单位的结果 中级难度 设计一个求直角三角形斜边长的函数,(以两个直角边为参数,求最长边 ...

  3. Swift初学习

    距离swift发布10天了,也简单看了一下swift的语法,个人感觉相对于object-c很是简单明了.Swift的出现并不能说明iOS开发简单了很多,有可能会变得复杂,你需要学习两门编程语言,因为在 ...

  4. Clojure语法学习-循环

    do和块语句 在Scala中,花括号{}括起来的语句构成一个block,它的值就是最后一个语句的值. scala> val a = { | println("a") | 1} ...

  5. Jquery 插件初学习

    参考文章:插件开发精品教程,让你的jQuery提升一个台阶 刚刚学了一下jquery的插件插件开发,写个demo记录.练习一下.毕竟,输出才是最好的学习. 这个也不过是最基础的一个插件写法,只是,自己 ...

  6. requests库写接口测试框架初学习

    学习网址:    https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-dscpm/ff75b907-415d-4220-89 ...

  7. 2018.2.21 Python 初学习

    折腾了一天,一直在用CMD学习Python写Hello World.偶然间发现可以用Pycharm.也算是给后面想学习的人提个醒,方便省事许多. format()使用方法. age = 20name ...

  8. 偶值得纪念的一天-初学习C#

    今天好悲催啊,竟然生病啦,不过一切还好! 今天我们在云和数据学习的第二天,上午没有听课,似乎学习了变量的定义以及命名方法,还有变量类型的显隐式转换:我感觉这些还是在之前看书知道啦把,因此看啦看老师做的 ...

  9. day 41 数据库初学习

    前情提要: 数据库初识别 一:数据库的介绍 https://github.com/Endless-Clould/homework/blob/master/student_system.sql 数据再这 ...

随机推荐

  1. 后缀树(suffix tree)

    参考: 从前缀树谈到后缀树 后缀树 Suffix Tree-后缀树 字典树(trie树).后缀树 一.前缀树 简述:又名单词查找树,tries树,一种多路树形结构,常用来操作字符串(但不限于字符串), ...

  2. 矩阵分解ALS方法

    目标函数 优化目标函数 利用坐标下降法,依次更新u和v的值.u和v的先后顺序无所谓,只要保证两者是交替更新的就好.这种方法又称为alternating least squares(ALS). 增加偏置 ...

  3. 夺命雷公狗---微信开发17----自定义菜单的事件推送,响应菜单的CLICK

    废话不多说,index.php 代码如下所示: <?php /** * wechat php test */ //define your token require_once "com ...

  4. C&num; 网络通信基础 总结

    1.WebClient类 如果只是想从特定的URI(统一资源标识符)请求文件,则可以使用最简单的.NET类,System.Net.WebClient.支持http:.https:和file:标识符开头 ...

  5. AIDL进程间调用与Binder的简单介绍

    Binder是安卓中特有的一种进程间通信(IPC)方式,从Unix发展而来的手段,通信双方必须处理线程同步.内存管理等复杂问题,传统的Socket.匿名通道(Pipe).匿名管道(FIFO).信号量( ...

  6. ADO&period;NET 2SqlDataAdapter、DataSet 的基本用法

    数据集完全独立于数据源,可以与数据源链接或者完全断开,其基本作用是为存储在内存缓存中的的数据提供关系视图 如果只是想读取和显示数据,则值需要使用数据读取器,尤其是处理大量数据的时候 如果需要处理数据, ...

  7. bootstrap模态框内容替换时会重新触发模态框?&lt&semi;a&gt&semi;标签到底有哪些特殊的特性呢&quest;

    segmentfault提问 这个问题我将bootstrap导航栏的<a>去除就解决了,那么问题来了,<a>标签到底有哪些特殊的特性呢? 主要属性href 链接href 这是一 ...

  8. ReactiveX 学习笔记(27)使用 RxJS &plus; Vue&period;js 进行 GUI 编程

    课题 程序界面由3个文本编辑框和1个文本标签组成. 要求文本标签实时显示3个文本编辑框所输入的数字之和. 文本编辑框输入的不是合法数字时,将其值视为0. 3个文本编辑框的初值分别为1,2,3. 创建工 ...

  9. WPF中,输入完密码回车提交 ,回车触发按钮点击事件

    类似与winform中窗体的AcceptButton属性,在wpf中,需要将按钮的IsDefault设置为true就行.

  10. Oracle RAC时间同步(NTP&sol;CTSS)

    1.RAC 相关时间同步(time synchronization)Oracle Grid可用两种方式进行时间同步1)基于OS的NTP2)基于clusterware的CTSS(Cluster Time ...