欢迎!请参阅关于页面了解有关此工作的更多信息。
我正在努力做 clojure.core/repeat reducer。
评论者:jafingerhut
Jason,你尝试过使用 JDK 1.6.0 构建 这个吗?我在 Mac OS X 10.6.8 + Oracle/Apple JDK 1.6.0 和 Ubuntu 11.10 + IBM JDK 1.6.0 上尝试了,并且在两个平台上都编译通过了,但在测试期间失败,因为找不到类 jsr166y.ForkJoinTask。
在我使用 Ubuntu 11.10 + Oracle JDK 1.7.0 时,可以干净编译和测试。
评论者:jasonjckn
这是一个影响 core.reducers 中所有方法的问题。Alan Malloy 也经历过这个问题。我尝试修复它,但最终只是升级到 JDK 1.7。我不懂为什么会出现这种情况。
据我所知,这个问题仅限于 mvn test。
当我将 clojure 包含在一个 leiningen 项目中,并将 jsr166y.jar 添加到 lib 目录时,core.reducers 在 java 1.6 上正常运行。
Jason,你说你在2012年5月17日的评论中提到这个功能适用于所有的 core.reducers。我不理解。未经你的补丁修复,我可以在新拉取的Clojure git仓库中运行 "./antsetup.sh ; ant",在早期评论中提到的任何一个JDK 1.6.0版本上都不会在测试过程中出现任何错误。你的意思是,core.reducers当前没有测试来验证这个问题,但你的补丁增加了这样的测试,即使没有任何其他代码更改,也会失败吗?
是的,你说对了。现在你这么一说,我的补丁是第一个调用 r/fold 的单元测试(现有的测试执行的是非并行归约)。
Stuart Halloway于2012年6月8日对Clojure master做出的提交“让reducers测试在ant下工作”,使得2012年5月11日的补丁0001-repeat-for-clojure.core.reducers.patch现在即使在需要类jsr166y.ForkJoinTask的新单元测试中,也能够在Oracle/Apple JDK 1.6和Linux IBM JDK 1.6上正常运行。
我在贡献者名单上。这个补丁还需要吗?抱歉耽搁这么长时间。
这个补丁应该等待http://dev.clojure.org/jira/browse/CLJ-993 提交后再进行。我认为有部分代码是共享的。
评论者:gshayban
从1.7.0版开始,repeat 现在可归约。
我们可以关闭这个工单了吗?
评论人为:alexandergunnarson
我认为包括这个reducer以实现并行处理会很不错,或者也可以将CollFold扩展到clojure.lang.Repeat(这也许更简洁)。
CollFold
clojure.lang.Repeat