Легкий и удобный - программирование
Подтвердить что ты не робот

Легкий и удобный

Извиняюсь, что я новичок в Clojure. Я нашел там немного возможностей для инструментария или учебников для мира Clojure, который мне удалось переварить до сих пор, поэтому я загрузил Light Table (http://www.lighttable.com/), который звучит так, как будто это должно облегчить задачу. Я нахожусь в Windows 7 64-bit, и основной пользовательский интерфейс Light Table работает.

Чтобы попытаться поэкспериментировать с Light Table/ Clojure, я также загрузил библиотеку рисования Clojure Quil (https://github.com/quil/quil), но после инструктажа Light Table для подключения к \quil-master\project.clj, а затем открытие и выполнение различных файлов из \quil-master\examples (например, automata.clj или graphics.clj), Light Table создает то, что я предполагаю, мышления ", который застревает или заканчивается" nil "или" java.lang.Math ".

Кажется, что работает только "example2.clj" (хотя и не всегда), поскольку он (обычно) всплывает окно с изменяющим цвет алмазом. Что мне нужно сделать, чтобы эти другие примеры Quil работали в Light Table?

(На стороне примечания, я также загрузил Mire (еще один проект Clojure на Github), но он также не будет запускаться вообще со световой таблицей.)

4b9b3361

Ответ 1

Этот ответ был для LightTable 0.2.0. Я еще не пробовал новый 0.3.0.

Имеет смысл попробовать LightTable и Quil. Я думаю, что боль в основном связана с проблемой курицы и яйца.

  • LightTable предполагает некоторые знания clojure (по крайней мере, в отношении управления проектами) и не предоставляет "стандартный" реплик, а скорее тестовый слой для еще более интерактивного стиля работы.
  • Quil предполагает комфорт в стандартной среде repl clojure и обертывает большую сложность базового java-проекта (Обработка).
  • Также вся цель Quil заключается в создании "побочных эффектов" (целых других графических дисплеев), а LightTable пытается помочь вам работать с функциями и их возвращаемыми значениями, а не с побочными эффектами функций.

Если вы подключаетесь к quil в качестве проекта, откройте example2.clj и выполните его (Ctrl Shift Enter) и получите светло-голубой "nil" - Поздравляем, у вас есть рабочая система! (По крайней мере, я могу дублировать то же поведение, и пример, похоже, работает).

В первый раз, когда вы это сделаете, может потребоваться некоторое время для LightTable для загрузки всех зависимостей Quil (возможно, почему LightTable, похоже, зависает) или, может быть, Light Table и Quil имеют ошибку взаимодействия, которую я еще не запускал.)

То, что "nil" - это возвращаемое значение, полученное из таблицы Light, выполняющей файл (в контексте запущенного проекта) (см. сноску). Где-то (возможно, скрытый за полноцветной световой таблицей) новое окно должно быть создано с запущенным примером.

Значение "java.lang.Math" выполнения automata.clj также согласуется с тем, что я вижу. Здесь трюк состоит в том, чтобы сгенерировать вызов defsketch, который example2.clj сделал inline, но automata.clj не делает.

Вы можете создать эскиз, вызвав функцию run-rule:

После выполнения файла automata.clj(для загрузки всех определений функций) добавьте следующую строку в конец файла в редакторе:

(run-rule 101 {:width 100 :height 100 :scale 4})

Поместите курсор после закрытия и выполните одиночную форму с помощью Ctrl-Enter. Снова новое окно (возможно, скрытое за другим окном - попытка переключения задачи с помощью Alt-Tab) должна открыть запуск автомата.

С помощью световой таблицы, связанной с проектом quil, и automata.clj уже оценен, вы также можете получить тот же эффект, открыв "instarepl" и набрав:

(clj-automata.core/run-rule 101 
                       {:width 100 :height 100 
                        :scale 4})

Попробуйте отредактировать значения и посмотреть, что произойдет. (Опять же вся природа Quil, являющаяся побочным эффектом, делает это не столь элегантным в LightTable, но, похоже, это работает.)


Сноска:

Я не очень хорошо знаком с LightTable. Я ожидал, что светло-голубой будет результатом оценки последней формы в файле, но это, похоже, не так. Использование Cntl-Enter в последней строке показывает "#" example2/example2 "not" nil ". Я также не очень хорошо знаком с Quil, а defsketch - это не регулярная функция, поэтому, возможно, это взаимодействие с LightTable нечетным образом.