![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态语言
iteye_15891
这个作者很懒,什么都没留下…
展开
-
方便的文件树遍历
我经常会遇到进行批量文件修改的情况。Windows 脚本我十分不精通,以前都是靠现写一个 C# 程序。遇到 Ruby 后,我十分喜欢它语法上的灵活性。(虽然我认为太灵活不一定好)而且它还是一种脚本语言,很方便。考虑到我所遇到的情况,我想写一个类来支持对文件名(文件夹名)或全路径名进行正则表达式匹配。同时也支持反向过滤。即,保留那些没有匹配上的文件或文件夹。举一个例子。比如用备份工具备份“我...2008-06-16 12:15:31 · 171 阅读 · 0 评论 -
解决Ruby脚本在Windows命令行乱码
如果把 ruby 当脚本使用,在 windows 命令行下面输出中文可能会乱码。这句话可以解决问题:[code="ruby"]STDOUT.set_encoding Encoding.locale_charmap[/code]原创 2011-05-08 16:08:51 · 239 阅读 · 0 评论 -
TimSort 中的核心过程
TimSort 是 Python 中 list.sort 的默认实现。Java 7 也将非原始类型列表的排序实现替换成了 TimSort。网上关于 TimSort 是什么,性能特点分析的文章不少,但是介绍它的具体实现步骤的文章很少。这里有一篇:[url=http://www.drmaciver.com/2010/01/understanding-timsort-1adaptive-merg...原创 2011-09-11 20:19:46 · 199 阅读 · 0 评论 -
完全由不变体写出来的 Register Machine Simulator
SICP 第二版 5.2 节提到的 Register Machine Simulator 我用 Clojure 重写了一遍,完全不用 mutable states。每执行一条指令都可以打出当时机器的状态,甚至可以把这些状态保存起来。这就是 Clojure 牛逼的地方……程序里的模型跟书上不太一样,为了方便对时间的管理(也就是为了用不变体搞定原本需要可变体搞定的事)。Machine 只包含寄...原创 2010-11-19 09:41:32 · 135 阅读 · 0 评论 -
在 Clojure 中处理异常
Update: As of Clojure 1.3, Clojure standardized the exception handling mechanism. Refer to [url=https://github.com/mmcgrana/clj-stacktrace]clj-stacktrace[/url]for the details.Clojure 中虽然使用了 Java...原创 2010-11-18 23:54:53 · 228 阅读 · 0 评论 -
Named arguments in Clojure
Clojure doesn't provide direct support for named arguments, which are supported under some popular dynamic languages like Ruby, Python. The following Python code was exerpted from `The Joy of Clojure'...原创 2010-11-18 23:54:01 · 91 阅读 · 0 评论 -
快速排序
看了《The Joy of Clojure》的快速排序,觉得比较丑,而且不通用。所以自己又写了一个。不过有一个比不上书里面的。书里面的支持 lazy-seq,而下面这个不支持。可能正是因为要支持 lazy-seq 所以书里面的那个才会那么繁琐吧……[code="clojure"](defn- split-by [pred coll] [(filter pred coll) (remo...原创 2010-11-18 23:51:53 · 80 阅读 · 0 评论 -
求对数
下面是求以 1.12 为底,2.7 的对数。本方法极其低效,仅仅标记一下以备以后参考。[code="clojure"](ns t (:require [clojure.contrib.generic.math-functions :as math]))(defn abs [x] (if (< x 0) (* -1 x) x))(defn close-enough...原创 2010-11-18 23:46:21 · 162 阅读 · 0 评论 -
Stream in Clojure
[code="clojure"](define fibs (stream-cons 0 (stream-cons 1 (stream-add (stream-cdr fibs) fibs))))[/code]The code above is an excerpt from [i]SICP[/i] that generates an infinite Fi...原创 2010-11-18 23:40:24 · 110 阅读 · 0 评论 -
[Groovy] this 语义的陷阱
groovy 中 this 的语义有问题。下面的代码会报异常,说 secret2 方法找不到:[code="java"]new Sub().doSomething()class Parent { def doSomething() { secret().secret2() } private def secret() { println "secret...2009-07-30 21:46:18 · 426 阅读 · 0 评论 -
两个 JavaScript 面向对象的方法
[b][size=large]准备工作[/size][/b]为了演示或者您试验,请先准备好下面的 HTML 模板。[code="html"]body, body * { font: 10pt Arial;}.tbl { border-style: solid; border-width: 1px; width: 500px; tabl...2008-10-02 07:06:20 · 114 阅读 · 0 评论 -
firstChild 把我玩了
加班两三个小时,就是因为被一个 DWR 的函数给玩了。dwr.util.removeAllRows(ele, options) 这个函数可以把 ele 元素下的所有子元素删除,但允许你添加例外。我试图把一个 下的一行保留下来。[code="html"] a a a a [/code]用这样的 JavaScr...2008-07-31 23:23:42 · 161 阅读 · 0 评论 -
模拟实现一个 Ruby 的 TCO
今天搜了一下,发现 ruby 只有一部分 VM 实现支持 TCO(Tail Call Optimization)。下面的代码模拟实现了一下,有点 clojure 的感觉了~~[code="ruby"]class Recur attr :args def initialize(*args) @args = args endenddef def_recu...原创 2011-05-15 00:24:35 · 115 阅读 · 0 评论