在Clojurescript中写一个“作弊”的奎因

时间:2016-10-25 02:40:11

标签: clojure clojurescript

假设我们想在clojure写一个作弊的quine,我们可以这样做:

dt[,  c:= .(list(unlist(b)[!unlist(b) %in% a])), 1:nrow(dt)][]
#   a         b       c
#1: 3 3,4,7,8,9 4,7,8,9
#2: 4 3,4,7,8,9 3,7,8,9
#3: 4 3,4,7,8,9 3,7,8,9
#4: 7 3,4,7,8,9 3,4,8,9
#5: 7 3,4,7,8,9 3,4,8,9
#6: 8 3,4,7,8,9 3,4,7,9

现在,这在Lein Figwheel中不起作用,因为 file 的值最终类似于/tmp/form-init########.clj,并包含引导代码某种。

问题:怎样才能让这个“作弊”的quine在clojurescript中工作?

注意:目标不是写一个quine。目标是编写一个cljs程序,可以访问中定义的文件。这整个“作弊”的事情正在试图更好地解释问题,然后我之前的失败尝试

Clojure + Clojurescript: Macro to read code of current file

1 个答案:

答案 0 :(得分:1)

作弊解决方案是分发源代码(例如将其放入资源并将其作为文件提供)并编译引导程序以加载和执行代码,并使其下载文件,并在文件中加载相同的文件......这样它可以对当前运行的代码执行HTTP请求,并执行它。这实际上是ClojureScript浏览器REPL如http://clojurescript.io/的工作方式......它们可以动态编译和执行传入的代码。 clojuresript.io是ClojureScript引导的一个很好的工作示例,如果你对它感兴趣,但是请注意,有很多事情发生,所以期望投入相当一段时间:))