2016-10-25 4 views
0

Предположу, что мы хотим, чтобы написать обманывающий Квин в Clojure, мы могли бы сделать:Дать «Мошенничество» Куайн в Clojurescript

(ns cheating-quine) 
... stuff here doesn't really matter ... 
(println (slurp *file*)) 

Теперь это не работает в Lein Figwheel, так как значение файла Концов что-то вроде /tmp/form-init########.clj и содержит код начальной загрузки.

Вопрос: как мы можем получить этот «мошеннический» quine для работы в clojurescript?

Примечание: цель состоит не в том, чтобы написать quine. Цель состоит в том, чтобы написать программу cljs, к которой имеет доступ к файлу, указанному в. Вся эта «обман Куайн» вещь пытается объяснить эту проблему лучше, чем моей предыдущей неудачной попытку

решения

Clojure + Clojurescript: Macro to read code of current file

ответ

1

Обманом является распространять исходный код (например, поместить его в ресурсах и служить ей в виде файла) и скомпилировать загрузчик для загрузки и выполнения кода и заставить его вытащить ваш файл, а в файле загрузить тот же файл ... таким образом он может выполнить HTTP-запрос для текущего кода и выполнить его , Это, по существу, то, как работают REPL-файлы браузера ClojureScript, такие как http://clojurescript.io/ ... Они компилируют и выполняют входящий код на лету. clojuresript.io - хороший рабочий пример загрузки ClojureScript, если вы заинтересованы в нем, но слово предостережения, довольно много происходит, поэтому ожидайте вложить достаточно времени :)

+0

clojurescript.io - это потрясающе! Спасибо, что поделился! это выглядит как футуристический интерфейс –