Форум программистов, компьютерный форум, киберфорум
Наши страницы
Clojure
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.80/30: Рейтинг темы: голосов - 30, средняя оценка - 4.80
_Ivana
4064 / 1898 / 237
Регистрация: 01.03.2013
Сообщений: 5,147
Записей в блоге: 22
1

Clojure - помогите начать

19.04.2015, 02:07. Просмотров 5839. Ответов 66
Метки нет (Все метки)

0. Написал название языка в заголовке темы по-нормальному, на английском (или это французский?, неважно), но этот форум мне сказал что нельзя совмещать кирилицу и латиницу в заголовке темы, чем не оставил мне выбора, кроме того, как использовать уродский транслит.

1. Слово "помогите" тоже запрещено - пробую альтернативу, а квест по созданию темы на этом форуме становится все интереснее

Теперь о моей ситуации - живу на винде 7, виртуальные машины ставить не умею, линуксы/макоси и т.п. - тоже, и не планирую. Хочу попробовать Кложу. Установил джаву рантайм энвиронмент последний, скачал кложу, и как завещал Алекс Отт, делаю так: нажимаю вин+r - открывается Выполнить, там пишу cmd.exe - открывается черная консоль, в ней пишу java - cp ....длинный путь.....clojure-1.6.0.jar clojure.main и наконец-то попадаю в РЕПЛ, где даже вычисляются выражения типа (apply + [1 3]) и печатается результат. Вопрос в том - можно ли делать это не так через ж...пу, как описано выше, а по-нормальному, с гуём, мышкой, кнопками, чтобы я мог хотя бы создать файл с текстом своей программы хоть в блокноте и загрузить его в РЕПЛ и выполнить, а если получить исполняемый файл для ЖВМ без РЕПЛа - то вообще предел мечтаний. Да и если будет хоть какой-то текстовый редактор с автоподсчетом скобок, а не простой блокнот - тоже будет хорошо, ибо иначе боюсь я со скобками в Лиспе убьюсь. Об ИДЕ даже не мечтаю, но если скажете что есть и простая и удобная (а не плагины к Эклипсу) - будет вообще счастье. В книжке перевода Алекса Отта и на сайте кложы сказано что-то про некий Ленинген, но с чем его едят не понял пока.

В общем, думаю вы поняли круг моих вопросов и сложностей, пожалуйста направьте дилетанта на путь истинный.

Добавлено через 2 минуты

Не по теме:

ЗЫ сделав обрезание в третий раз, Иванов (это правда моя фамилия :)) таки добился права выезда в Израиль, но заголовок темы конечно претерпел :D

3
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2015, 02:07
Ответы с готовыми решениями:

Clojure
Посоветуйте русскоязычные ресурсы для изучения сего языка

Clojure map
Есть ли map, который бы применял переданную функцию ко всем значениям из PersistentArrayMap'а т.е....

Написать программу на Clojure
Написать функцию, которая разбивает предложение в отсортированный список слов Кто-то может...

Ввод данных пользователем в Clojure
Как получать данные от пользователя? На такой код ругается: (defn sum (apply +...

Присвоение ввода с клавиатуры переменной в Clojure
Мне нужен код делающий следующее : 1. Присвоить ввод с клавы переменной. 2. "Сложить" её со...

66
castorsky
1974 / 1077 / 87
Регистрация: 29.11.2013
Сообщений: 3,354
19.04.2015, 03:22 2
emacs + clojure + windows. Для доступа и редактирования "скрытых" директорий/файлов можно использовать far, он читает ntfs сам, без запросов к системе. Где именно лежит emacs.d в windows я не помню. Путем нехитрых манипуляций отыскал быстро когда sbcl прикручивал. Кастану ка я сюда smoke853, он писал на кожуре под windows.

Добавлено через 6 минут
_Ivana, блин, ну Вы даете. Загляните сюда и посмотрите секцию clojure tools.
2
_Ivana
4064 / 1898 / 237
Регистрация: 01.03.2013
Сообщений: 5,147
Записей в блоге: 22
19.04.2015, 03:49  [ТС] 3
Спасибо за рекомендации. Но емаксом меня напугали, хоть я его и не пробовал. А тулзы уже читаю, но если не пробовал до этого ничего из перечисленного (как я), то все равно с чего начинать, и тогда Лениногена поставить склоняюсь для начала.

Добавлено через 23 минуты
С Лениным облом - он требует Джава Девелопмент Кит а не рантайм энвиронмент как у меня. Ладно, если освою подгрузку модулей из текстов в РЕПЛ, то буду пока руками в блокноте как в каменном веке корячиться.
1
_sg
4137 / 3884 / 294
Регистрация: 12.05.2012
Сообщений: 2,733
19.04.2015, 09:13 4
_Ivana, Lisp Cabinet
Цитата Сообщение от _Ivana Посмотреть сообщение
Спасибо за рекомендации. Но емаксом меня напугали, хоть я его и не пробовал.
Editor war

Why Emacs?

Emacs-Beginner-HOWTO

Famous Emacs Users (that are not famous for using Emacs)
3
19.04.2015, 09:13
smoke853
504 / 509 / 42
Регистрация: 12.12.2013
Сообщений: 483
19.04.2015, 10:44 5
С виндой я немного смутно помню, я на Ubuntu уже как с месяца 3 наверн ушел. Но все же инструкция для Windows, на 100% не уверен:
1) Ставлю Java SE Development Kit 8
Не помню прописывается ли путь до JDK автоматом в PATH или вручную надо прописывать.
2) Ставлю Leiningen конечно же
Смотрим в разделе для Windows, нажимаем ПКМ на the batch file и Сохранить ссылку как.
В папке пользователя создаю папку .lein а в ней папку bin, в эту папку добавляю выше указанный batch файл. Потом прописываю путь в PATH, типа такого:
Код
C:\Users\smoke\.lein\bin
Потом запускаю в терминале:
Код
lein self-install -- скачает leiningen-2.5.1-standalone.jar
Потом если нужно запустить repl, пишем:
Код
lein repl
Но я обычно сразу создаю проект.

По поводу инструментария, как вы знаете, я использую emacs. Если точнее, то:
emacs 24.5.1 + Prelude
Мой конфиг
Хоткеи под все это дело

Но для Clojure также есть хороший плагин Cursive под Intellij Idea, так что можно и его. Хотя, когда я последний раз его пробовал, были вроде какие-то мелкие баги.
2
Lambdik
1044 / 938 / 107
Регистрация: 04.11.2012
Сообщений: 971
Записей в блоге: 3
19.04.2015, 11:16 6
Ковырял когда-то Eclips + Clojure. Всё что с тех пор помню, то что в новом проекте нужно сразу определить пользовательский пакет для пространсва имён, иначе не запустится. Новые библиотеки добавляются через Help -> Install New Software.
Перед началом работы нужно нажать кнопку Run compile.
Свои функции добавляются вверху а вызывать можно в REPL: ctrl + Enter.
1
Миниатюры
Clojure - помогите начать  
_Ivana
4064 / 1898 / 237
Регистрация: 01.03.2013
Сообщений: 5,147
Записей в блоге: 22
19.04.2015, 15:48  [ТС] 7
Спасибо всем за советы и ссылки, буду пытаться разобраться и выбрать. А пока из того что понял точно:

1) сношу установленный джава рантайм энвиронмент и ставлю вместо него полноценный девелопмент кит. Хотя вроде как он мне не особо нужен, но раз Ленин требует... Пути в патх я и для энвиронмента руками прописывал, думаю и для кита так же пропишу.

2) скачиваю и пробую поставить Ленина - насайте вроде есть экзешник-инсталлер для винды. И смотрю по результатам что получилось, работает ли он и что в нем вообще есть.

О результатах отпишусь.
0
helter
19.04.2015, 16:16
  #8

Не по теме:

Цитата Сообщение от smoke853 Посмотреть сообщение
я на Ubuntu уже как с месяца 3 наверн ушел.
:good:

0
smoke853
504 / 509 / 42
Регистрация: 12.12.2013
Сообщений: 483
19.04.2015, 16:31 9
Цитата Сообщение от _Ivana Посмотреть сообщение
экзешник-инсталлер
не нужен.
1
_Ivana
4064 / 1898 / 237
Регистрация: 01.03.2013
Сообщений: 5,147
Записей в блоге: 22
19.04.2015, 16:39  [ТС] 10
Цитата Сообщение от smoke853 Посмотреть сообщение
не нужен.
конечно линуксоидам не нужен, но я его щелкнул и он мне сам и директории создал, и селф-инсталлер скачал и патхи свои прописал - короче сделал все то, что вы расписывали по шагам. Для виндозного ламера самое то. Теперь все стоит, но непонятно что с этим Лениным делать РЕПЛ запускается, да, но он и без него запускался и даже без девелопмент кита (хоть и черезж..пно). Сейчас пытаюсь разобраться с созданием проекта по англоязычному туториалу.
0
smoke853
504 / 509 / 42
Регистрация: 12.12.2013
Сообщений: 483
19.04.2015, 16:44 11
Цитата Сообщение от _Ivana Посмотреть сообщение
конечно линуксоидам не нужен
Так на винде, я им тоже не пользовался. Инсталлер ЕМНИП старый же, то ли lein старый качает, то ли clojure старую.
Цитата Сообщение от _Ivana Посмотреть сообщение
разобраться с созданием проекта
Да там все просто:
Код
lein new имя_проекта
cd имя_проекта/
lein deps
0
_Ivana
4064 / 1898 / 237
Регистрация: 01.03.2013
Сообщений: 5,147
Записей в блоге: 22
19.04.2015, 16:51  [ТС] 12
Методом тыка обнаружено, что писать все это надо не в репле а в командной строке заботливо вызвыанного цмд, и при этом ленин создает папку с именем проекта в папке юзера, то есть рядом со своим корневым каталогом. Гуишного чуда не произошло, все осталось цмд-шно командострочно, но копаю дальше...
0
smoke853
504 / 509 / 42
Регистрация: 12.12.2013
Сообщений: 483
19.04.2015, 16:54 13
_Ivana, да, конечно. В repl'e вроде нет такого, как в ghci:
Haskell
1
:!<command>
0
_Ivana
4064 / 1898 / 237
Регистрация: 01.03.2013
Сообщений: 5,147
Записей в блоге: 22
19.04.2015, 17:01  [ТС] 14
smoke853, за 8 месяцев постижения хаскеля я все-таки научился создавать файлы-модули, импортить их друг из друга, загружать их в неплохой гуёвый интерпретатор, нажимать там "ран" и запускать мэйн, даже компилировать их в экзешники с указанием опций и докачивать пакеты из инета через страшный мутабор кабал инсталл. И я могу как в интерпретаторе баловаться (с удобным мышиным управлением), так и экзешники компилировать в нем же.

А тут пока что непонятно ничего. РЕПЛ то у меня и без ленина работал. Как мне создать файл-модуль с моим кодом и получить из него jar файл для запуска в жаве, например? Хоть хеллоу ворлд в окошке.
0
smoke853
504 / 509 / 42
Регистрация: 12.12.2013
Сообщений: 483
19.04.2015, 17:26 15
_Ivana,
Кликните здесь для просмотра всего текста
lein должен был вам создать файл в:
Код
aeon\src\aeon\core.clj -- где aeon - мое имя проекта
Функцию, которая в этом файле, можно удалить.
Создаем, что-то типа такого:
Lisp
1
2
3
4
(ns aeon.core)
 
(defn -main []
  (println "Hello World"))
Чтобы его запустить вы должны прописать :main aeon.core в:
Код
aeon\profiles.clj
Будет что-то типа такого:
Lisp
1
2
3
4
5
6
7
(defproject aeon "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.6.0"]]
  :main aeon.core)
Потом в терминале вводим:
Код
lein run
получаем Hello World
Цитата Сообщение от _Ivana Посмотреть сообщение
Как мне создать файл-модуль с моим кодом и получить из него jar файл для запуска в жаве, например?
Не знаю, никогда этим не занимался Наверное:
Код
lein uberjar
По поводу компиляции, в Clojure REPL - это не интерпретатор. Все, что вводится в REPL, компилируется в байт-код JVM.
1
_Ivana
4064 / 1898 / 237
Регистрация: 01.03.2013
Сообщений: 5,147
Записей в блоге: 22
19.04.2015, 17:42  [ТС] 16
smoke853, спасибо, мэйн нашел и запустил в цмд, даже через ран без репла, также прочитал про убержар и он мне сделал таки жар-файлы, но хеллоу ворлд не выводится, сейчас попробую пример с вызовом открытия отдельного окна в ОС.

Не по теме:

ЗЫ и все-таки, не обижайтесь линуксоиды, но управление мутаборами из командной строки - это каменный век! В наше время, когда космические корабли бороздят так сказать, и когда уже везде тачскрины, заставлять юзера по хитрым хоткеям запускать окно терминала и вводить там буквы, причем если у меня длинное имя каталога, то я иду в виндовый проводник, запоминаю его в буфер обмена и в терминале слава Биллу он мне по правой кнопке дает команду "вставить" - и это счастье. иначе каждый раз руками набивать команды... Я сделал даже текстовый файл себе - с перечнем мутаборных команд для терминала. Но это же издевательство над разработчиком!



Ладно, ковыряюсь дальше, пробую таки добиться ответа от жар-файла...

Добавлено через 8 минут
UPD слава всему,
Lisp
1
(javax.swing.JOptionPane/showMessageDialog nil "Hello World")
таки делается в жар файл который выдает хеллоу ворлд в окошке при запуске. Теперь уже можно пытаться хоть что-то делать, несмотря на обилие непонятностей вокруг всего этого
0
helter
19.04.2015, 17:50
  #17

Не по теме:

Какова скорость ввода полезной информации с клавиатуры и с тачскрина, в бит/с? То-то же. Мышь выигрывает там, где важна геометрия, то есть где полезная информация включает в себя координаты мыши. То есть мало где. В графических редакторах, например.

Команды в терминале автодополняются. Директории и файлы тоже автодополняются. К тому же наиболее частые команды очень короткие: ls, cp, mv, rm.

А текстовый файл с командами ещё и запустить можно.

В линуксах сколько угодно файловых менеджеров типа проводника. И внезапно эмуляторы терминала поддерживают копировать/вставить. Причём в иксах для этого не нужно искать какие-то команды: щелчок кнопкой мыши вставляет выделенный ранее текст.

0
_Ivana
19.04.2015, 18:01  [ТС]
  #18

Не по теме:

Ладно, я же в конце концов не для холивара тему создавал, а для помощи в кложе :) Просто я виндузятник, измученный гуями в интерфейсах, во всех ИДЕ они у меня были, начиная с вижуал студии и заканчивая хаскельным виндовым интерпретатором. Да даже в интернет браузере с которого сейчас пишу, я не жму F5 (которую еще помнить надо!) ради обновления, а щелкаю мышью, как и кнопку "отправить ответ", собственно. Поэтому необходимость набирать буквы в текстовом терминале с черным фоном ассоциируется у меня с годами далекой юности и ДОСом, когда и виндов еще не было :) Но если Ленин работает так, то хрен с ним, придется терпеть, все равно ничего лучшего пока не нашел. Что только не вытерпишь ради кложы :)

0
smoke853
504 / 509 / 42
Регистрация: 12.12.2013
Сообщений: 483
19.04.2015, 18:02 19
Забыл написать, что lein run я использую очень редко. Больше скажу, я REPL то не часто использую.
Т.к. есть emacs
Вот простой пример: нажимаю C-c C-k, на этот хоткей привязана функция (cider-load-buffer &optional BUFFER) - получаю ответ.
Я конечно мог бы переключиться в нижний буфер (repl) и вводить там, но зачем?! Даже если надо будет что-то вывести в REPL или в отдельный буфер, для этого тоже имеются хоткеи.
0
Миниатюры
Clojure - помогите начать  
_Ivana
4064 / 1898 / 237
Регистрация: 01.03.2013
Сообщений: 5,147
Записей в блоге: 22
19.04.2015, 18:10  [ТС] 20

Не по теме:

Аццкий ОФФ: хоткеи это конечно очень удобно, но их надо все помнить! А также все остальные мутаборы типа кабал инсталл и лейн убержар, причем со всеми опциями. А если про скорость набора и тачскрины - вы знаете с какой скоростью я управляюсь мышью?! Долгие месяцы игры в Quake по сети, когда доля секунды промедления чревата виртуальной смертью, учат работать указателем мыши и ловить кнопочки размером в пару пикселей за доли секунды в любом месте экрана :) Когда я заказчикам демонстрирую работу, они меня регулярно просят - помедленнее, мы не успеваем следить за вашими действиями :D Причем, я при этом не специально выпендриваюсь, а просто работаю как всегда.


ЗЫ вот думаю, неужели придется ставить таки Эклипс или Емакс и изучать еще и их?...
0
19.04.2015, 18:10
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2015, 18:10

Clojure, lein-droid, Android ламерство
Пытаюсь разбираться с программированием под Андройд на Lisp'е. Сразу скажу -- имею очень...

Clojure. Последовательность создается задом-наперед
Делаю из SICP задание &quot;треугольник Пифагора&quot;. Вот процедура, которая принимает на вход...

Ошибка при запуске локального сервера на Clojure в IntellijIDEA
Выводится ошибка по строке, которой даже нет. По отдельности все функции компилируются без...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru