草庐IT

从 Javascript 到 Clojure

我知道ClojureScript-可以将clojure代码编译为javascript,但是是否可以反过来,将javascript代码的一些子集转换回clojure? 最佳答案 是的,虽然这并没有什么意义。Clojure->JavaScript之所以有意义,是因为:JavaScript是广泛的网络应用程序唯一合适的目标语言它允许有效地使用GoogleClosure编译器来优化整个程序Clojure是一种很棒的“源代码”语言,因为它具有宏功能并且对定义富有表现力的DSL提供了强大的支持对于目标语言,Clojure是一个奇怪的选择-如果您

javascript - 编译成可读 js 的轻量级 lisp 方言是什么?

什么是使用JS自己的类型编译成简短、可读和可修改的JS的lisp方言? 最佳答案 这是一个广泛的list编译为JavaScript的编程语言的编译器,包括几种Lisp/Scheme方言。关于“简短、可读和可修改”部分,这有点主观……您可以测试列出的几个编译器,然后决定哪个最适合您。来自the"Lisp,Scheme"section列表的[对子部分标题进行了微小的格式更改]:Lisp,SchemeClojure-likeClojureScriptClojuretoJS,theofficialversion.Supportsthemaj

java - 一种从 Clojure 中的 java.io.File.listFiles 中剥离返回值的方法

我在Clojure中调用一个java函数来获取文件列表。(require'[clojure.java.io:asio])(str(.listFiles(io/file"/home/loluser/loldir")))我得到了一大堆像这样的字符串#等我如何摆脱括号并将它们放在某种形式的数组中以便另一个函数可以访问它? 最佳答案 这些字符串只是JavaFile对象的打印格式。参见Filejavadoc哪些操作可用。如果你想要文件路径作为字符串,它会是这样的(map#(.getPath%)(.listFiles(io/file"/home

java - 如何使用 Scheme/Lisp/Clojure 解决 Matrix/LP 问题?

我需要像MatLab或NumPy支持的那样执行数值分析。Scheme/Lisp/Clojure(Java)有支持的好库吗?我不想离开我的圆括号。非常感谢。 最佳答案 对于CommonLisp,请参阅Matlisp:CommonLisp的矩阵包(包括BLAS和LAPACK);GSLL:用于Lisp的GNU科学图书馆;和othersoncliki. 关于java-如何使用Scheme/Lisp/Clojure解决Matrix/LP问题?,我们在StackOverflow上找到一个类似的问题:

java - 在 clojure 中, (= 'a ' a) 指的是 'same atom' 吗?

在CommonLISP的某些实现中,我们可以说对于以下表达式(eq'a'a)是true因为'a和'a是“同一个原子”。这可能取决于具体实现,但似乎该短语(在流行的LISP教学书中使用)假定具有相同值的原子存储在内存中的相同位置。在Java中,两个具有相同值的interned字符串存储在内存中的相同位置。现在JVM上的Clojure继承了Java的遗产,但是说Clojure(在JVM上)中具有相同值的两个原子是同一个原子是真的吗?(即Clojure的原子存储机制是如何工作的?) 最佳答案 首先,“原子”在Clojure中的含义与在大多

java - 为什么函数式编程语言支持自动内存而不是命令式语言?

这是我在网上随机找到的一些关于动态规划的讲座上看到的问题。(我毕业了,已经知道动态规划的基础了)在解释为什么需要内存的部分,即//psuedocodeintF[100000]={0};intfibonacci(intx){if(x0)returnF[x];returnF[x]=fibonacci(x-1)+fibonacci(x-2);}如果不使用memoization,那么很多子问题会被重新计算很多次,复杂度非常高。然后在一页上,笔记有一个问题没有答案,这正是我想问的。在这里,我使用了准确的措辞和它显示的例子:Automatedmemoization:Manyfunctionalpr

java - 如何在 Clojure 中使 Java 类不可变?

我想在clojure中包装java的PriorityQueue类,以便在我的程序的另一部分中使用。我想弄清楚的是,是否有任何方法可以以lispy方式执行此操作并使优先级队列不可变。有什么好的方法可以做到这一点,还是我只是将PriorityQueue用作可变数据结构会更好? 最佳答案 我认为没有一种简单的方法可以将可变数据结构包装为不可变数据结构。当新版本可以巧妙地与旧版本共享数据时,不可变数据结构变得高效,如果不访问PriorityQueue的内部结构,我真的看不出如何做到这一点。如果你真的想要一个持久化的优先队列thisthrea

java - Clojure 方法缺失

有人知道如何在Clojure中实现method_missing(类似于Ruby)吗?例如(defnmethod_missing[name&args](foonameargs))如果使用得当,它将对DSL非常有用。提前致谢! 最佳答案 在Ruby中,method_missing是元编程的主要结构之一。它与Ruby的面向对象结构紧密结合,在“元类”的类中动态创建方法。这是可以做到的,因为在Ruby中类也是对象。由于Clojure是一种函数式语言,因此模仿这种Rubyism意义不大。然而,Lisps(如Clojure)的基本习语之一是代码

java - Java 是否支持像 Lisp 那样基于多个对象的类型分派(dispatch)到特定的实现?

在当前页面(http://landoflisp.com)上阅读Lisp,我在单击链接CLOSGUILD时显示的页面倒数第二段中发现了以下语句:Theimportantthingtonoteabouttheexampleisthatinordertofigureoutwhichmixmethodtocallinagivensituation,theCLOSneedstotakeintoaccountbothoftheobjectspassedintothemethod.Itisdispatchingtoaspecificimplementationofthemethodbasedonth

java - 树搜索保存执行状态

我有一棵树,A/\BC/\\DEF表示为一个列表,(A(B(D)(E))(C(F)))它实际上是一棵非常大的树,所以我想做的是,如果我在100毫秒保存状态下找不到我要找的东西,我会开始搜索,返回,做一些内务处理,然后再次调用搜索并从我离开的地方继续。基本上我正在使用的模拟给我一定的时间不足以完成搜索。我正在寻找有关如何实现这一目标的想法/技术?(在Clojure和Java中) 最佳答案 线程可能是最简单的解决方案,但在单个线程上自行管理它并不是很难。只给你100毫秒的“模拟”环境通常不允许任何新线程,因此这是一个替代方案。基本思想是