(76) Clojure: Why would someone learn Clojure? - Quora ★ Why would someone learn Clojure?   Edit…
Learn X in Y minutes Where X=clojure Get the code: learnclojure.clj Clojure is a Lisp family language developed for the Java Virtual Machine. It hasa much stronger emphasis on purefunctional programming thanCommon Lisp, but includes severalSTM utilit…
我们要在Java中调用Clojure有两种方法,一种是将Clojure代码生成class文件,另外一种是通过Clojure RT方式直接在java程序中调用Clojure代码.两种方式各有优缺点, 第一种方式的优点在于在Java调用class与平常的java代码没有任何区别,而且对IDE友好.并且由于是预编译了代码,在运行时会有一些速度优势.但是缺点是会损失一些Clojure动态语言的优势.第二种方式则和第一种正好相反. 在这里,我们只讲第一种方法. 首先,我们通过Leinigen创建一个Clo…
OS: Mac OS X 10.10 IDEA 14.0.2 Community Edition 安装Leiningen 按照http://leiningen.org/的指南安装lein 阅读Leiningen教程中文版了解leiningen 如果需要使用代理,需要执行 export HTTPS_PROXY=host:port export HTTP_PROXY=host:port (当执行lein deps时,如果也需要使用代理,得export https_proxy以及export http…
最近在看storm的源码,就学习分享下clojure语法. 阅读目录: 概述 变量 运算符 流程控制 总结 概述 clojure是一种运行在JVM上的Lisp方言,属于函数式编程范式,它和java可以方便的互相调用,这样开发的程序可以很好的结合java和clojure的优点(storm),这跟Net中C#和F#的角色一样. 安装java1.6以上的JDK,下载地址. 下载clojure的环境 包,下载地址. 解压后用命令行进入到clojure目录下,输入下面命令进入REPL命令行交互界面: ja…
什么是Clojure Clojure是一种动态的.强类型的.寄居在JVM上的语言. Clojure的特性: 函数式编程基础,包括一套性能可以和典型可变数据结构媲美的持久性数据结构 由JVM提供的成熟的.高效的运行时环境:所以Clojure可以使用Java类库,反之Clojure库也可以被Java使用 跟JVM/Java的互操作能力使得很多架构.运维方面的需求可以得到满足:Clojure代码可以像Java代码一样被打包,然后部署到任何Java应用可以部署的地方 一套提供并发.并行语义的机制:Clo…
这次来聊聊clojure的并行与并发,如果你还不知clojure为何物,请翻翻我的上一篇推文.“并行”是指clojure对并行计算的支持(parallel computing),“并发”是其并发特性(concurrency).用通俗的话来说,“并行”是同一时间做多件事情,“并发”是同一时间应对多件事情.举个例子,“并行”就类似于GPU做3D绘图,左手画圆.右手画方:“并发”就类似于web 服务器利用服务器的多个内核来同时处理来自用户的多个请求.如果还不够明白,请大家google一下wiki.^_…
欢迎转载,转载请注明出处,徽沪一郎. 楔子 由于阅读storm源码的原因,头一次接触到Clojure.没有花特别的时间来研究clojure语法,只是在一些特殊的用法时,才查了一下clojure官网的文档,基本上能够很快的理解其意思. 在理解了storm中的基本处理流程之后,花了一段时间好好的看了几本clojure编程的书籍,书籍名称及评价分别如下. clojure programming 介绍了clojure语言的基本特点,同时对于clojure的工程实践做了比较详细的介绍 programmin…
在Eclipse中新建一个Clojure工程clj01 clojure 操作mysql需要依赖mysql-connector-java.clojure-contrib与java.jdbc三个jar包. project.clj配置信息如下:配置完:dependencies 保存,系统会自动下载所配置的jar包信息. (defproject clj01 "0.1.0-SNAPSHOT" :description "FIXME: write description" :u…
我们先要了解下什么是Clojure,我们从它的特性来了解: 1.首先它是一门编程语言,并且它写的程序是运行在jvm上的,同java语言一样. 2.Clojure代码可以使用任意java类库,反之java代码也可以使用任何的Clojure库,这使得Clojure天生就有强大的功能,因为有大量已有的java类库可以被使用. 3.Clojure语言基于Lisp语言的,它是Lisp语言的一种方言,它保留了Lisp语言最好的一些特性. 4.Clojure语言是一种函数式编程语言. 5.Clojure语言是…
背景 初学clojure,想着看一些算法来熟悉clojure语法及相关算法实现. 找到一个各种语言生成迷宫的网站:http://rosettacode.org/wiki/Maze_generation 在上述网站可以看到clojure的实现版,本文就是以初学者的视角解读改程序. 小试牛刀 先看一些简单的示例,以帮助我们理解迷宫生成程序. 绑定符号x++ (defn f [x] (let [x++ (+ x 5)] #{[x x++]})) (println (f 1)) => #'sinlov.…
此文已由作者张佃鹏授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 1. 逻辑编程思维: 逻辑编程(逻辑程序设计)是种编程范型,它设置答案须匹配的规则来解决问题,而非设置步骤来解决问题.过程是: 事实+规则=结果 简单的说,事实就是一些已知输入,规则是应该遵循的限定条件,输入和输出应该遵循一定的规则,然后找出所有满足这些规则的输出,便是结果.在逻辑编程时,我们没必要去关心寻找结果的过程,而注重的是输出结果.   逻辑编程的要点是将正规的逻辑风格带入计算机程序设计之中,数学…
转:http://www.linuxidc.com/Linux/2012-10/71557.htm 首先确实不得不说,网上有很多类似Ubuntu下安装JDK7的教程.不过大都是基于JDK6的bin文件.如果你现在去Oracle官网去看一下的话,会发现都变成.tar.gz的压缩文件了. 另外本文还顺带给了Clojure的下载链接,文件名啥的请按你的实际情况修改! ———————————— 分割线 ———————————— 1. 首先你需要到oracle官网下载最新版本的JDK.跑到oracle官网…
[From] http://huangz.iteye.com/blog/1325228 导读 本文的目标是为熟悉 Ruby.Python或者其他类似语言.并对 Lisp 或者函数式编程有一定程度了解的程序员写的 Clojure 快速入门指南. 为了让文章尽可能地精炼且简单易懂,本文有以下三个特点: 一:不对读者的知识水平作任何假设,当遇上重要的知识点时,只给出 wikipedia 等网站的链接引用而不对知识点进行解释,有需要的读者可以沿着链接查看,没需要的直接略过就行了. 二:和第一条类似,没有…
此文已由作者张佃鹏授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. clojure是一门动态类型的语言,在类型检查方面并没有c++/java这种静态类型语言好用,所以多个模块之间进行接口参数传递时,由于接口文档设计不严谨等原因,总会发生接口参数类型错误,参数个数不正确等问题,给代码调试带来很大的挑战,因此在clojure中,对接口参数的进行类型和范围的检查是非常必要的.为此,我们找到了clojure.spec这个库( https://clojure.github.io/c…
;; 引入clojure的io包 (use '[clojure.java.io]) ;; 遍历目录将所有符合要求的文件做为列表返回 (defn walk [dirpath pattern] (doall (filter #(re-matches pattern (.getName %)) (file-seq (file dirpath))))) ;; 将检索出的php文件列表保存到filted-files (def filted-files (walk "z:/wwwroot" #&q…
以下是clojure 基础环境搭建的几种方式 mac brew install clojure linux curl -O https://download.clojure.org/install/linux-install-1.10.1.483.sh chmod +x linux-install-1.10.1.483.sh sudo ./linux-install-1.10.1.483.sh windows https://github.com/clojure/tools.deps.alpha…
简单性.专心编程不受打扰(freedom to focus).给力(empowerment).一致性和明确性:Closure编程语言中几乎每一个元素的设计思想都是为了促成这些目标的实现. 学习一门新的编程语言往往需要花费大量的心思和精力,只有程序员认为他能够从他想学的语言中得到相应的回报,这种学习才是值得的.在使用面向对象技术对状态进行管理时,无论是由于面向对象技术内在的因素还是别的偶然因素,都会带来许多不必要的复杂问题,Clojure正是诞生于其创建者Rich Hickey对避免这些问题所做的…
目录 背景简述 第5章 宏 5.0 术语 5.1 宏到底是什么 5.1.1 宏不是什么 5.1.2 有什么是宏能做而函数不能做的 5.1.3 宏vsRuby的eval 5.2 编写你的第一个宏 5.3 调试宏 5.3.1 宏扩展 5.4 语法 5.4.1 引述和语法引述 5.4.2 反引述与编接反引述 5.5 什么时候使用宏 5.6 宏卫生 5.6.1 Gensym来拯救 5.6.2 让宏的用户来选择名字 5.6.3 重复求值 5.7 宏的常见用法和模式 5.8 隐藏参数:&env和&fo…
很多事情要做,一件一件来; Erlang Resources 小站 2013年1月~6月资讯合集,方便检索.      小站地址: http://site.douban.com/204209/     1 月   A few thoughts about Open Source Software Antirez http://dou.bz/1pyUXj Erlang's biggest missing feature: globals http://dou.bz/22GYw7 DTrace, F…
JVM 平台上的各种语言的开发指南 为什么我们需要如此多的JVM语言? 在2013年你可以有50中JVM语言的选择来用于你的下一个项目.尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的JVM语言么? 如今借助来自像Xtext和ANTLR这样的工具的支持,创建一种新的语言比以前容易多了.个体编码者和群体受突破和改进现存JVM语言,以及传统Java的限制和缺陷的驱使,让许多新的JVM语言应运而生. 新的JVM语言开发者感觉他们的工作室针对现存语言的产物——现存的语言提供了太过受限制的…
一.前言 当看到Lisp等函数式编程语言的语法是 (say (concat "hello" "world")) 这样的时候,我就有种深入学习的冲动,因为它的语法和自己一直使用的Java.C#都不同,酷比了!(我承认我是语法控^_^)又由于我主要玩的是JavaScript,恰好ClojureScript就是纯函数式的JS超集,于是决定以ClojureScript作为函数式编程的起点.(虽然JavaScript具有函数式语言的特点:函数为一等公民,闭包等) 本文作为开篇…
一.前言 当使用CoffeeScript.ClojureScript编写前端脚本时,当使用Less.Sacc编写样式规则时,是否觉得调试时无法准确找到源码位置呢?当使用jquery.min.js等经压缩后的工具库时,是否觉得连调试的门都不不知道在哪呢? 针对上述问题,google为我们提供了Source Maps这一解决方案,以下内容为对Source Maps的学习记录,以便日后查阅. 由于篇幅较长,特设目录一坨! 二.示例 三.Source Maps方案详解 1. 方案结构 2. 支持的浏览器…
[原]storm源码之storm代码结构[译]  说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助. Storm的源码共分为三个不同的层次. 首先,Storm在设计之初就考虑到了兼容多语言开发.Nimbus是一个thrift服务,topologies被定义为Thrift结构体.Thrift的运用使得Storm可以被任意开发语言使用. 其次,Sto…
近日,Light Table项目创始人Chris Granger在其博客上宣布Light Table开源,将代码全部托管在GitHub上,遵循GNU开源许可.与此同时,还发布了0.6版本,该版本添加了插件.并对基础架构也进行了提升. Light Table是由Microsoft Visual Studio部门项目经理Chris Granger离职后开发的全新理念的IDE,支持多种语言,比如Python.Clojure.JavaScript等.Light Table是一个很简单的概念:我们需要真正…
此教程是我花了一点时间和功夫整理出来的,希望能够帮到喜欢Lisp(Common Lisp)的朋友们.本人排版很烂还望多多海涵! <Lisp简明教程>PDF格式下载 <Lisp简明教程>ODT格式下载 具体的内容我已经编辑好了,想下载的朋友可以用上面的链接.本人水平有限,如有疏漏还望之处(要是有谁帮我排排版就好了)还望指出!资料虽然是我整理的,但都是网友的智慧,如果有人需要转载,请至少保留其中的“鸣谢”页(如果能有我就更好了:-)). Lisp简明教程 整理人:Chaobs 邮箱:c…
说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助. Storm的源码共分为三个不同的层次. 首先,Storm在设计之初就考虑到了兼容多语言开发.Nimbus是一个thrift服务,topologies被定义为Thrift结构体.Thrift的运用使得Storm可以被任意开发语言使用. 其次,Storm的所有接口都是Java语言来定义的.因此,尽管…
http://storm.apache.org/releases/1.0.1/Structure-of-the-codebase.html Structure of the codebase 源码分成独立的三层 第一:在最开始的时候Storm就被设计成支持多种语言,Nimbus是一种Thrift的服务,Topologies是一种Thrift类型的结构.Thrift的使用使得Storm可以被任何语言使用. 第二:所有的Storm的接口都被声明为java接口,虽然内部的实现有很多的Clojure但是…
随着各种各样的编程语言铺地盖地向我们涌来,软件世界似乎变得有点疯狂了.JVM的帝国在不断地壮大,它已经不满足于只作为Java语言的运行平台.它勇敢地将自己的触角伸向了JRuby,Groovy等等,未来会对更多的动态语言提供支持.这里我为大家亮剑JVM的9款编程语言杀手,分别包括 Groovy.JRudy.Jython.Clojure.Clojure.Kotlin.Rhino.Ceylon. JVM越来越被当作一个具有丰富类库支撑的通用平台,而不仅仅是Java语言的运行平台.在未来,会越来越多的看…
storm源码之storm代码结构[译] 说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助. Storm的源码共分为三个不同的层次. 首先,Storm在设计之初就考虑到了兼容多语言开发.Nimbus是一个thrift服务,topologies被定义为Thrift结构体.Thrift的运用使得Storm可以被任意开发语言使用. 其次,Storm的所…