小编Ale*_*ler的帖子

存在哪些CLR/.NET字节码工具?

我非常了解用于操作,生成,反编译JVM字节码(ASM,cglib,jad等)的Java工具.CLR字节码有哪些类似的工具?人们为CLR做字节码操作吗?

.net clr il bytecode

7
推荐指数
3
解决办法
4885
查看次数

Scheme中引用的符号

我不是计划专家所以不确定我是否在这里使用正确的术语.让代码说明一切:

CSI> (define tree '(1 2 3 'Symb 4 5 6))
#<unspecified>
CSI> tree
(1 2 3 (quote Symb) 4 5 6)
CSI> (symbol? 'Symb)
#t
CSI> (map symbol? tree)
(#f #f #f #f #f #f #f)
Run Code Online (Sandbox Code Playgroud)

来自Clojure背景,我认为在Scheme中使用符号就像Clojure中的关键字一样.我应该通过嵌套列表结构并用函数调用替换符号.这是我的维度解决方案,它确实有效:

(define (print-track track attrs)
    (apply fmt #t
        (map (lambda (attr)
               (cond 
                     ((symbol? attr) (get-attr attr track))
                     (else           attr)))
             attrs)))
Run Code Online (Sandbox Code Playgroud)

(symbol?)线上方的空白区域是(list?)有条件的,但这可能是错误的方法.

我正在使用Chicken Scheme.

scheme clojure

7
推荐指数
1
解决办法
436
查看次数

当你说"这种语言在JVM上运行"时,它真正意味着什么?

我最近听过很多关于Scala,Clojure等应该在JVM上运行的内容.这是否意味着这些语言正在实现下面的Java API?在JVM下运行语言意味着什么?

谢谢.

java language-agnostic jvm clojure jvm-languages

7
推荐指数
2
解决办法
286
查看次数

Lein.bat无法在windows xp中启动repl

我正在尝试安装Leiningen以安装Overtone.

按照安装Leiningen的指示,我:

已安装JDK7u25已安装leiningen 2.2.0

无法进一步因为:

当我运行lein.bat时,我收到此消息:"Error: Could not find or load main class'并且 - 这是错误消息的结束.

当计算机运行以下批处理文件命令时会发生这种情况:

 "%LEIN_JAVA_CMD%" -client %LEIN_JVM_OPTS% ^
 -Dclojure.compile.path="%DIR_CONTAINING%/target/classes" ^
 -Dleiningen.original.pwd="%ORIGINAL_PWD%" ^
 -cp %CLASSPATH% clojure.main -m leiningen.core.main %*
Run Code Online (Sandbox Code Playgroud)

我已经检查了环境变量的位置java.exe和路径leiningen\bin,它们都是正确的.Java安装和leinginen安装看起来都很好:一切似乎都存在并且位于正确的位置.

当我REM出@echo在批处理文件关闭,控制台输出显示用于两个路径java.exeleiningen-2.2.0-standalone.jar正确.对于Windows用户来说-Dclojure.compile.path,唯一奇怪的是,它是"E:\Documents and settings\<myname>\.lein/target/classes" - 2个正斜杠"/"不能成为任何Windows路径的一部分,但也许它们可能对java有意义.

我是所有这些东西的新手.说明书中是否有一些缺失的东西是如此明显,它没有被包括在内?或者只是我或我的系统的问题.

感谢您的帮助或想法.

windows clojure leiningen

7
推荐指数
1
解决办法
1214
查看次数

像F#中的cond一样的clojure

我最近在F#中绕道而行,并遇到了一个叫做cond的宏.以下是用法示例:

(cond
 (= target (nth arr mid)) mid  
 (< target (nth arr mid)) (search left (- mid 1))
 (> target (nth arr mid)) (search (+ mid 1) right)
 (= left right) -1)
Run Code Online (Sandbox Code Playgroud)

这意味着以下伪代码:

if target == arr.[mid] then return mid
if target < arr.[mid] then return (call search(left, mid-1)) 
if target > arr.[mid] then return (call search(mid+1, right))
if left == right then return -1
Run Code Online (Sandbox Code Playgroud)

这只是二进制搜索的一个例子,以防你想知道左边和右边是什么,但不是很重要.

我试图在F#中找到类似的东西,但我不能,所以我决定尝试自己写.我最终得到了这样的东西:

type condition = bool * int

let cond (conds: condition seq) = 
    conds …
Run Code Online (Sandbox Code Playgroud)

f# clojure

7
推荐指数
2
解决办法
197
查看次数

用于Java对象的clojure.spec自定义生成器

我刚看到Rich关于clojure.spec 的一次谈话,并且真的想试试我的项目.我正在编写一系列使用eclipse CDT库解析C代码的工具,我想说明我的函数接受并发出AST对象.

我认为可以为一个函数编写一个非常基本的规范,它接受AST的根并发出所有树的叶子,如下所示:

(import '(org.eclipse.cdt.core.dom.ast IASTNode))
(require '[clojure.spec :as s])

(defn ast-node? [node] (instance? IASTNode node))
(s/def ::ast-node ast-node?)
(s/fdef leaves :args ::ast-node :ret (s/coll-of ::ast-node))
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试练习代码时,(s/exercise leaves)我收到一个错误:

Unable to construct gen at: [] for:  
xxx.x$leaves@xxx  
#:clojure.spec{:path [], :form #function[xxx.xxx/leaves], :failure :no-gen}
Run Code Online (Sandbox Code Playgroud)

如何为Java对象编写自定义生成器以完全规范和运用我的代码?

clojure clojure.spec

7
推荐指数
1
解决办法
758
查看次数

在多台计算机上扩展多线程应用程序

我正在做一个项目我们需要更多的性能.随着时间的推移,我们不断改进设计,使其更加并行(包括线程和分布式).然后最新的一步是将其中的一部分移动到具有16个核心的新机器上.我发现我们需要重新思考如何在共享内存模型中扩展到那么多内核.例如,标准内存分配器不够好.

人们会推荐哪些资源?

到目前为止,我发现Sutter的专栏Dobbs博士是一个良好的开端.我刚刚获得了多处理器编程的艺术和关于英特尔线程构建模块的O'Reilly书籍

malloc performance multithreading scalability

6
推荐指数
1
解决办法
863
查看次数

在mac os上安装leiningen的问题

我试图在mac os 10.6.4上安装Leiningen,遵循这里的说明 - http://alexott.net/en/clojure/ClojureLein.html.正在下载程序包,但找不到lein命令.可能是什么问题呢?

macos installation clojure leiningen

6
推荐指数
1
解决办法
3977
查看次数

如何从历史记录中删除已发布的Git提交?

我意外地使用Git进行了更改,将其推送到GitHub,之后又做了几次提交.我需要从历史中删除该提交.我意识到这可能会软管其他叉子,我很好.

我可以使用以下命令在本地修改我的历史记录:

git rebase --onto HEAD~4 HEAD~3 HEAD
Run Code Online (Sandbox Code Playgroud)

这看起来很好.但是,我不知道如何将已更改的历史记录适当地推回到github.

git github

6
推荐指数
1
解决办法
1441
查看次数

leiningen midje测试在Intellij中不起作用

考虑下面的(最小)leiningen项目

./project.clj:

(defproject repro "0.1.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure "1.5.1"]
                 [midje               "1.5.1"]])
Run Code Online (Sandbox Code Playgroud)

./repro/src/repro/core.clj:

(ns repro.core)
Run Code Online (Sandbox Code Playgroud)

./repro/test/repro/core_test.clj:

(ns repro.core-test
  (:require [repro.core  :refer :all]
            [midje.sweet :refer :all]))

(facts "about numbers"
       (fact "trivial"
         1 => 1) )
Run Code Online (Sandbox Code Playgroud)

如果我安装了leiningen midje插件,它将在命令提示符下运行,如下所示:

lein clean
lein midje
~~> All checks (1) succeeded.
Run Code Online (Sandbox Code Playgroud)

但是,如果将leiningen项目导入Intellij 12.1.5 Community Edition,则会出现大量堆栈跟踪:

Exception in thread "main" java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
    ...
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.NullPointerException
at java.util.concurrent.ConcurrentHashMap.hash(ConcurrentHashMap.java:333)
at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:988)
at clojure.lang.Namespace.find(Namespace.java:188)
at clojure.core$find_ns.invoke(core.clj:3728)
at clojure.core$the_ns.invoke(core.clj:3760)
at clojure.core$ns_name.invoke(core.clj:3767)
at midje.Bootstrap$bootstrap.invoke(Bootstrap.clj:8)
at …
Run Code Online (Sandbox Code Playgroud)

clojure intellij-idea leiningen midje la-clojure

6
推荐指数
0
解决办法
450
查看次数