Двач.hk не отвечает.
Вы видите копию треда, сохраненную 16 августа 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
59 Кб, 639x639
Лиспотред №9 #1003393 В конец треда | Веб
Лисп - семейство языков программирования. Характерные особенности лиспов: динамичность, гомоиконность (код как данные), программируемость.

Основные диалекты
Common Lisp - разрабатывался как промышленный язык, пригодный для широкого спектра применения, из-за чего имеет достаточно объемную спецификацию. Является мультипарадигменным (процедурщина, функциональщина, ооп (CLOS)), с сильной, динамической типизацией. Есть опциональная декларация типов и, в некоторых реализациях (sbcl, например), частичный их вывод.
Описание особенностей: http://habrahabr.ru/post/143490
Основные реализации:
+ свободные: SBCL (нативный код), Clozure CL (нативный код), ECL (через сишку), Clisp (байт-код; небольшой размер образа; похоже, заброшен), Clasp (LLVM; ориентирован на интероп с C++), ABCL (байт-код JVM), gcl, cmucl
+ коммерческие: LispWorks, Allegro CL, Scieneer CL, mocl (для программирования под ведро и ios)
Scheme - это минималистичный лисп, пригодный в основном для обучения, исследований. Наиболее практичными реализациями являются GNU Guile ( https://www.gnu.org/software/guile/ ) и Chicken Scheme ( http://call-cc.org/ ).
Racket - Развитие PLT Scheme. Racket включает в себя много подъязыков (typed racket, lazy racket, frtime racket, Scheme стандартов r5rs и r6rs).
Clojure - Стильный, модный, молодежный лисп с бóльшим уклоном в функциональщину, иммутабельными структурами данных, поддержкой параллельщины с транзакционной памятью, агентами. Ориентированность на JVM сильно отразилась на дизайне языка, что многим не нравится.
Hy - Lisp-синтаксис для Python с анафорическими макросами ( http://hylang.org/ )
Emacs Lisp - его область применения ограничивается емаксом. Является наследником ТОГО САМОГО MacLisp'а.
Lisp Flavored Erlang (LFE) - Реализация Lisp поверх виртуальной машины Erlang (BEAM) в итоге мы имеем всё лучшее из обоих миров: привычный синтаксис s-выражений, макросы, функциональщина, иммутабельность, многопоточность из коробки + набор либ для построения отказоустойчивых распределённых приложений OTP. http://lfe.io/
Tcl - скриптовый язык с немного наркоманскимстранным синтаксисом. Из коробки множество батареек на любой случай жизни, среди которых неповторимый Tk. Язык очень удобен для написания скриптиков, особенно когда к ним требуется приделать графический интерфейс.
Rebol
PicoLisp - Наркоманская хуита
newLISP - Скриптовый лисп с компактным и быстрым интерпретатором и батарейками на любой случай жизни. В первую очередь предназначен для скриптоты, которую обычно пишут на perl, python, tcl, sh: обработка текстов, работа с сетью, базами данных, взаимодействие с ОС, построение графиков и т.п.
Список возможностей: http://www.newlisp.org/index.cgi?Features
Отличия от других диалектов: http://www.newlisp.org/index.cgi?page=Differences_to_Other_LISPs

Как изучить?

Emacs Lisp
+ An Introduction to Programming in Emacs Lisp https://www.gnu.org/software/emacs/manual/html_node/eintr/index.html — скучный туториал, предполагающий что читатель вообще не умеет программировать
+ Emacs Lisp Reference Manual https://www.gnu.org/software/emacs/manual/html_node/elisp/index.html

Common Lisp
+ Practical Common Lisp http://www.gigamonkeys.com/book/ или русский перевод — http://lisper.ru/pcl/
+ On Lisp http://www.paulgraham.com/onlisp.html
+ Land of Lisp
+ Common Lisp HyperSpec http://www.lispworks.com/documentation/HyperSpec/Front/ — стандарт языка
+ Art of Metaobject Protocol — подробное описание MOP и CLOS
+ Попрактиковаться можно на Exercism'е http://exercism.io/languages/lisp
Алсо, годная статья про проектирование eDSL'ей на CL http://swizard.info/articles/solitaire/article.html

Scheme
+ The Little Schemer (https://www.amazon.com/Little-Schemer-Daniel-P-Friedman/dp/0262560992), The Seasoned Schemer (https://www.amazon.com/Seasoned-Schemer-MIT-Press/dp/026256100X), The Reasoned Schemer (https://www.amazon.com/Reasoned-Schemer-MIT-Press/dp/0262562146), Death of a Schemer (https://www.amazon.com/Death-Schemer-Frank-May-Chronicles/dp/1610273060)
+ SICP (это скорее вводные лекции по программированию, а не учебник по схеме, но тоже пойдет)
+ http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html
+ Попрактиковаться можно на Exercism'е http://exercism.io/languages/scheme

Racket
+ The Realm of Racket
+ How to Design Programs http://www.ccs.neu.edu/home/matthias/HtDP2e/index.html
+ https://docs.racket-lang.org/

Clojure
+ Programming Clojure, 2nd edition (для новичков)
+ Clojure for brave and true http://www.braveclojure.com/foreword/ — В отличие от предыдущего сухого изложения, более приятный для восприятия материал, да и бесплатный, если читать онлайн.
+ The Joy Of Clojure, 2nd edition (есть есть бэкграунд в Лиспе или ФП)
+ Попрактиковаться можно на Exercism'е http://exercism.io/languages/clojure

Tcl/Tk
+ Официальный учебник http://www.tcl.tk/man/tcl8.5/tutorial/tcltutorial.html
+ Документация по tcl http://www.tcl.tk/man/tcl8.6/TclCmd/contents.htm и tk http://www.tcl.tk/man/tcl8.6/TkCmd/contents.htm
+ Статьи про Tcl и Tk на wikibooks с примерчиками https://en.wikibooks.org/wiki/Category:Tcl_Programming
+ TkDocs с примерами на tcl, perl, ruby http://www.tkdocs.com/tutorial/index.html

Среды разработки
Одно из основных преимуществ лиспа в сравнении с языками с циклом разработки "написал → перекомпилировал → запустил в отладчике" - поддержка интерактивно-итеративного метода разработки. Но без инструментария, обеспечивающего полноценное взаимодействие с реплом, оно сводится на нет. Поэтому писать без использования нормальной среды - значит упустить важную особенность языка.

!!Чтобы не ебаться с емаксом, лучше можно взять уже преднастроенный spacemacs ( https://github.com/syl20bnr/spacemacs ).

Common Lisp
+ Portacle ( https://shinmera.github.io/portacle/ )
+ Emacs + SLIME - самый лучший вариант.
+ vim + SLIMV
+ LispWorks
+ AllegroCL IDE упаси боже
+ Eclipse + cusp
+ <Что-нибудь для сублайма/атома уже запилили, наверное?>

Scheme/Racket
+ Emacs + Geiser (поддерживает GNU Guile и Chicken Scheme)
+ DrRacket

Clojure
+ Emacs + CIDER
+ LightTable
+ Vim-fireplace
+ Cursive Clojure (IntelliJ plugin)
+ Counterclockwise (Eclipse plugin)

Tcl
+ Emacs + tcl-mode (только подсветка синтаксиса и простенькое взаимодействие с реплом, но жить можно)

Библиотеки
Common Lisp
+ Quicklisp ( https://www.quicklisp.org/beta/ ) - CPAN из мира CL
+ Quickdocs ( http://quickdocs.org/ ) - документация по всем пакетам из quicklisp
+ Проекты, заслуживающие внимания ( https://github.com/CodyReichert/awesome-cl )
+ Cliki ( http://cliki.net/ )
+ Обзор экосистемы общелиспа на швабре ( http://habrahabr.ru/post/265589/ )

Scheme
+ Racket: http://pkgs.racket-lang.org/ и http://planet.racket-lang.org/
+ Chicken: http://wiki.call-cc.org/chicken-projects/egg-index-4.html
+ http://snow.iro.umontreal.ca/?tab=Packages
+ http://www.schemespheres.org/spheres

Предыдущие треды: http://arhivach.org/?tags=3055,113
Шапка: https://titanpad.com/x87hR0KJ2w
#2 #1003397

>Cloje - a clone of Clojure built atop Scheme/Lisp.


https://gitlab.com/cloje/cloje
#3 #1003559
https://practicalli.github.io/spacemacs/
здарова чувачки
#4 #1010719
Скажите мне, что не так с лиспом?
Вроде такой крутой язык, а неумеет нормально с IO работать. Пара каких-то дерьмолиб и все.
Где его вообще можно применять то?
#5 #1010722
>>1010719
В задачах искусственного интеллекта, конечно же.
#6 #1010738
>>1010719
у кложи все ок с io
#7 #1010746
>>1010738

>у кложи все ок с io


java/net
Насколько я понимаю.

>>1010722

>В задачах искусственного интеллекта, конечно же.


Сложно себе представить такие задачи без интенсивного IO и параллелизма.
#8 #1010822
>>1010719
В функциональным языках вообще всё плохо с IO.
#9 #1010831
А как мне быть если нужно хранить состояние? Вот я должен проводить итерацию пока не будет достигнут какой-то критерий. А критерий может быть мутабельным, ну например на протяжении скольких-то шагов приращение результат было меньше заданной точности. Тупо создавать новое состояние и кидать его как доп параметр в рекурсии?
#10 #1011009
>>1010831

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


Ты наркоман совсем?
Если нужно хранить состояние - храни состояние.
Лисп тебе этого не запрещает.
#11 #1011027
>>1010831
Да. Вообще говоря любой цикл можно реализовать через (хвостовую) рекурсию.
#12 #1011075
>>1010822
хуево все с IO только у хаскеля из-за фанатичной чистоты. Какие проблемы у кложи или у эрланга?
#13 #1011096
>>1011009

>запрещает


Ну он очень толсто намекает.
#14 #1011151
>>1010722
Для таких задач есть пролог тащемта
#15 #1011276
>>1011096

>Ну он очень толсто намекает.


И не намекает даже.
#16 #1011381
Почему лисп не конкурентно способный по отношению к другим языкам? Почему он непрактичен? Даже в MIT нет Lisp.
#17 #1011403
>>1011381

>не конкурентно способный


откуда инфа? Лиспы это много языков и на лиспах написано достаточно продуктов.
#19 #1011428
Аноны, какой Лисп пригоден для веба? Рассматриваю Racket и Clojure. В Racket нравится почти все, правда пока не догнал как на нем писать для веба. В Clojure не нравится JVM и запутанный веб-стек.
#20 #1011431
>>1011428
я не юзал ракет, поэтому не могу за него советовать, я по кложе. Стек простейший, ring и compojure это все что тебе надо для того чтобы делать вебприложения. Осваиваются за пару дней. Удачи
#21 #1011434
>>1011431
Спасибки. Мне вот почему то стек не показался простым, ну да ладно, буду бить дальше. А как насчет ClojureScript, по идее на нем можно писать под Ноду, или нет?
#22 #1011453
>>1011434

>Ноду


Конечно можно, и к реакут ее тоже можно прикрутить.
#23 #1011465
>>1011453

>Конечно можно, и к реакут ее тоже можно прикрутить.


Лучше сразу к PHP
#24 #1011515
>>1011453
Спасибо.

>>1011465
К чему такой выпад? Писать на Javascript нет никакого желания, а раз уж ClojureScript компилится в Javascript, то почему бы не использовать его и на Ноде.
#25 #1011517
>>1011465
пацан ты походу ваще не вывозишь. Пыха это для рендеринга хтмля сервером. Мы про кложескрипт говорим, который на js хостицца. Реакт хороший фреймворк который дает няшные абстракции. Почти все библиотеки для работы над интерфейсами в кложескрипте являются сорт оф врапперами над компонентной системой реакта и это хорошо, потомушта реакт няшненький и декларативный, состояние от поведение отделяет.
Учись и просвящайся
#26 #1011525
Читаю СИКП и столкнулся с такой фигней, например выражение и книги

(define (abs x)
(if (< x 0)
(- x)
x))

не будет работать правильно, потому что интерпретатор воспринимает минус из (- x) как функцию, и поэтому не возвращает отрицательный x.

То есть если вызвать функцию с положительным числом, то все будет нормально, (abs 5) вернет 5.

Если вызвать с отрицательным, (abs -5) то функция вернет положительное число 5, так как интерпретировала (- x) как функцию - и положительный x.

Если убрать скобки, будет ошибка синтаксиса. Не знаю как быть. Вроде должен быть оператор, который говорит что форма не содержит функций, чтобы (- x) возвращал отрицательный x. Не знаю как загуглить это, помогите плиз. Пишу на Racket.
#27 #1011534
>>1011525
определи функцию которая отнимает число от нуля и используй ее тут вместо минуса
#28 #1011536
>>1011534
ну или просто (- 0 x) :)
#29 #1011545
>>1011534
>>1011536

Оригинальное решение, спасибо.

Все таки хочу на будущее узнать как интерпретировать выражение как обычную форму без функций. В кложуре точно есть такой оператор, а вот в рэкет не знаю.

Непонятно как могли такое написать в СИКПе, код ведь не рабочий.
#30 #1011586
>>1011536
Парадокс, но как ты написал не работает, нужно наоборот, (- x 0). Это только в ифах так. Чет даже не смешно, что не так с ракетой.
#31 #1011592
Нашел обновленную, исправленную версию СИКП, и там тоже самое, везде пишут (- x), как так, это же не работает.

(define (abs x) (cond ((> x 0) x) ((= x 0) 0) ((< x 0) (- x))))

(define (abs x) (cond ((< x 0) (- x)) (else x)))

(define (abs x) (if (< x 0) (- x) x))

Ну почему такая херня, они что не проверяют код.
#32 #1011594
>>1011592
Возьми MIT Scheme и проверь
#33 #1011600
>>1011594
Что за MIT Scheme? Проверял в Racket. Да и что проверять, и так ясно что первый минус интерпретируется как функция.

Нашел в одном месте указание на такое поведение, но там вместо ссылки на объяснение, 2 левые ссылки.

For example, here's how one could create an absolute value procedure using lambda and if.

> (define abs-of-steele


(lambda (x) (if (>= x 0) x (- x))))

> (abs-of-steele -1)


1

> (abs-of-steele 1)


1

To understand why this is a horrible pun, click here and here.

Взято отсюда http://cs.gettysburg.edu/~tneller/cs341/scheme-intro/
#34 #1011612
>>1011600

примеры кода в сикп даны на языке Scheme. Это тоже такой лисп, там работает унарный минус

MIT/GNU Scheme running under OS X

1 ]=> (- 1)

;Value: -1
#35 #1011616
>>1011612
Ну и что? Racket это бывший Scheme. Фактически это один и тот же язык. Проблема же не в языке, а в том, что кто-то неправильно дает примеры, если даже в СИКПе ошибка.
#36 #1011621
>>1011616
Как мы видим, не один и тот же
#37 #1011623
>>1011621
Попробуй такую функцию:

(define (abs x) (if (< x 0) (- x) x))

При вызове на отрицательном числе, будет выдавать положительное.
#38 #1011636
>>1011623
Парень, ставь mit scheme и переставай зафлуживать тред :)

1 ]=> (define (abs x) (if (< x 0) (- x) x))

;Value: abs

1 ]=> (abs -33)

;Value: 33
#39 #1011643
>>1011636
У тебя должно было вернуть -33, отрицательное число должно было вернуть. В том то и ошибка.
#40 #1011644
>>1011643
Схуяли?
#41 #1011649
>>1011636
Все разобрался. Минус на минус дает плюс. Не понял условие, думал, что на отрицателный х должен быть отрицателный результат.
#42 #1011658
>>1010719
Какой именно лисп ты имеешь в виду? И что там ненормального с вводом/выводом
#43 #1012134
https://atom.io/packages/atom-slime
Таки дошли у кого-то руки, запилили слайм под богомерзкий атом.
#44 #1012181
>>1012134
Хера ты очнулся, проекту 2 года уже.
#45 #1012183
>>1012181
А он как-то до этого на глаза не попадался
#46 #1015108
Хочу понять как реализованы базовые функции в Scheme/Racket. Как это можно узнать? По репозиторию на гитхабе лазил, но найти там трудновато.
#47 #1015371
На кложе можно под андроид писать?
#48 #1015387
>>1015371
В целом да, правда не знаю насколько удобно.

https://www.infoq.com/news/2015/08/clojure-native-android-apps

Можно еще писать под React Native для андроид.
#49 #1015659
>>1015371
Нет, горячая замена кода там чееж жопу сделана. Спасибо дальвику
#50 #1015746
>>1015371
Вроде как есть возможность, но не стоит.
#51 #1016710
А десктопные приложения на кложе можно писать?
#52 #1016713
>>1015659
На новых девайсях давно уже не dalvik, а йоба поэффективнее.
#53 #1016767
>>1016710
Можно, разрешаю.
#54 #1016790
>>1016713
Тогда тем более
#55 #1016813
>>1016713
Байт-код тот же и механизмы все те же. Просто вместо JIT теперь прекомпиляция.
#56 #1016835
>>1016813
А кросскомпиляция в Котлин есть?
#57 #1016861
>>1015371
Если уже и можно, то не нужно
https://gitlab.com/eql/EQL5-Android
#58 #1016869
>>1016813

>Просто вместо JIT теперь прекомпиляция.


>Просто


Для динамического языка, который тоннами создает классы в рантайме, это нихуя не просто. Раньше приходилось изъебываться генерацией dex'ов в рантайме и последующей их подгрузкой дальвиком, который далее их джитил. Теперь, насколько я понимаю, задача усложнилась и стала ещё более ресурсоемкой
#59 #1016875
>>1016835
Чиво блять?
>>1016813
Поправка, с 24 там ART с JIT.
23 Кб, 923x111
#60 #1017185
Ошибка? Должно быть просто 2, 3 и 4?
#61 #1017203
>>1017185
В чем ошибка? В том что 1 будет применено к 2,3,4, а не 1,2,3,4?
#62 #1017205
>>1017203
Да. 1 это не аргумент
#63 #1018545
http://eudoxia.me/article/common-lisp-sotu-2015

ченить за 2 года поменялось?
для ИТ срок громадный, а для говномамонта общелиспа похоже новье.
#64 #1018573
Анон, посоветуй гайдов по spacemacs. Второй день не могу вкатиться. Открыл гайд C-h t, а там половина шорткастов не работает, так как у меня evilmode.
#65 #1018720
>>1018573
https://practicalli.github.io/

Там 4-й гайд по спейсмаксу.

Собственно этот - https://practicalli.github.io/spacemacs/
#66 #1018723
>>1018720
Спасибо.
#67 #1018934
>>1018573
Прям вот двачую. Так то все понятно, проме гита. Сегодня удолил весь проект, и ххуй смог откатить. Заебок.
#68 #1019017
Вот на Java веб-приложениях что EJB, что Spring структура одна - Controller-Service-Repository, где каждый слой отвечает за своё. Можно и иначе, но будет говнокод.
А как на Clojure писать грамотно? Будут ли подобные слои?
Антон #69 #1019643
Я правильно понимаю что на Common Lisp нельзя определить свой класс как потомок sequence и переопределить для него функции elt, length, etc.. ?
Антон #70 #1019708
Какие есть для коммон лиспа библиотеки для удобного и современного стиля функционального программирования?
Типо как https://github.com/magnars/dash.el для Emacs Lisp.
#71 #1019782
Все, заебался я с этой БДСМной чистотой. Возвращаюсь в стан динамикобогов.

Кложаскрипт тут обсуждается?
Какой тулинг сейчас самый модный? Кто-то пишет про figwheel, кто-то про boot-*. Что посоветуете?
#72 #1019893
>>1019708
мап, фильтр и редьюс на клиспе пишется за 3-4 строчки
#73 #1019930
>>1019893

> мап, фильтр и редьюс на клиспе пишется за 3-4 строчки


мап(который одновременно ещё и зип) и редьюс там уже есть и так

А вот фильтра нет. И партиал-аппликате и функшон-сомпозе
и ещё кучи всяких полезностей

> пишется за 3-4 строчки


Ну так кто-то должен был уже написать
#74 #1019959
Как то после сиподобных языков кложа сложно заходит, до сих пор не могу въехать в хешмапы.
5 Кб, 214x137
#75 #1019974
Читаю сикп. До главы с ковычкой всё было понятно. Но что значит эта кавычка? Видел (error "какой-то текст") Значит одинарная кавычка это не строка, а что-то другое. Но ведёт себя похоже. Вот например тут во втором примере куда-то пропал символ пробела между a и b ходя тожна была пропасть только a если бы эта кавычка была просто строкой.
#76 #1020036
>>1019974

> Читаю сикп


лучше перед сикпом почитай хотя бы какие-то основы по лиспу или схеме
иначе будешь кучу таких дурацких вопросов задавать
#77 #1020257
>>1019974
Ковычко - это цитирование. Нет ковычко - списко вычисляецо (+ 1 2) -> 3.
Есть ковычко - списко не вычисляется, а остается как есть '(+ 1 2) -> (+ 1 2).
Ковычко 'something - сахар для (quote something). quote - это специальный оператор, предотвращающий вычисление своего оргументо.
#78 #1020274
>>1020257

>quote - это специальный оператор, предотвращающий вычисление своего оргументо.


Какой ужас. Все через жопу.
#79 #1020368
>>1020274
Если не ошибаюсь во всех лиспах так. Иначе как сказать интерпретатору, что первый аргумент списка не функция, только пометив список.
#80 #1020439
>>1020274
Не через жопу, а семантика. quote + eval - одна из многих фич лиспа, перекочевавшая в эти ваши JS и PHP.
#81 #1020498
>>1020439

> в эти ваши JS и PHP


Сам то на чем пишешь?
#82 #1020521
>>1020498
На всем, до чего руки дотянутся.
#83 #1020522
>>1020521
А на эликсире писал?
#84 #1020840
>>1019017
бамп
#85 #1020917
Сегодня поигрался с коммон лиспом. Понравился синтаксис, но названия функций просто мрак. Потом брмбануло, и я дропнул. Попробую схемку. Анон, что подскажешь? Знаю руби и жс
#86 #1021009
>>1020917
дропнул из-за названий, ты еблан?
#87 #1021041
>>1020522
Только поигрался с ним один вечерок.
#88 #1021382
>>1020917
Clojure.
#89 #1021426
>>1021009
Ну чего сразу обзываться-то? Вот в рубях отличные названия, а в космонавтов говно
#90 #1021427
>>1021426
Блин какие космонавты. В коммоне
#91 #1021487
>>1021426
Как макросы освоишь, так перестанешь обращать внимание на названия и познаешь истинный дзен диска.
#92 #1021544
>>1020917

> названия функций просто мрак


>брмбануло


чет лол
#93 #1024134
>>1015108
ns.synrc.com/publications/cat/CPS/lisp.pdf
#94 #1024144
>>1020917
Что за названия такие? car / cdr?
#95 #1024221
>>1024144
Точечная пара состоит из двух регистров address и decrement. Эти функции отдают содержимое этих регистров, contents of address/decrement register - car/cdr
#96 #1024360
>>1020917

>Понравился синтаксис


>названия функций просто мрак


>Знаю руби и жс


Хеллоуворлдщиков с необсохшим смуззи на губах нам ещё не хватало.
>>1021041
Ты так со всеми языками """"""""""""знакомишься"""""""""""""""?
#97 #1024397
>>1020036
pcl читал, но дропнул через сотню страниц т.к. захотел класику

>>1020257
А подробнее про это где пишут? Чтобы прям по шагам разбирали как строчки с этой кавычкой интерпритатор обрабатывает.
#98 #1024403
>>1024397
Читай ебаный SICP
#99 #1024414
У каких кложуроредакторов есть приличная поддержка удаленной разработки?
В atom+nuclide можно добавлять удаленные проекты, в емаксе есть tramp. Что еще есть?
#100 #1024416
>>1019930

>А вот фильтра нет.


remove-if же

>И партиал-аппликате и функшон-сомпозе


Это уже в александрии есть
#101 #1024418
>>1024414
Зачем тебе что-то ещё?
#102 #1024427
>>1024418
Емакс мне просто не нравится. Нуклиде требует установки серверной части. Хочется и простоту(например, подключение и копирование поверх SSH), и приятный редактор.
#103 #1024480
>>1021041
А хрен ли с этим элексиром дольше знакомиться-то, если уже хорошо знаком с эрлангом и хачкелем?
#104 #1024481
#105 #1024500
Лисперы, кто-нибудь писал на Joxa иди LFE?
#106 #1024505
Джентльмены, я тут пытаюсь в СИКП, накатал свою парашу в scheme, а как запустить своё творение - не могу понять.
#107 #1024515
Из терминала или из среды Dr. Racket. В терминале можно raco make <имя файла> или raco exe <имя файла>

Только узнал, что raco может декомпилировать байткод, надо будет попробовать.
#108 #1024537
>>1024505
А куда ты его катал, еслм не знаешь как запустить? Реплом не польхуешься что ли сука?
#109 #1024538
>>1024500
Не нужны
#110 #1024542
>>1024537
Скачал с сайта MIT Scheme и начал писать, но от него ни ответа ни привет, даже числа складывать не хочет.
#111 #1024546
>>1024542
Ну дык результат вычисления выражений только в репле сам выводится, а ты ж небось ему файл скармливаешь. В любом случае, рекомендую скачать drRacket как более дружелюбную для новичков среду
#112 #1024548
>>1024538
Виртуальная машина Эрланга очень даже располагает писать под нее. Какие сейчас лиспы живы кроме кложур?
#113 #1024550
>>1024542
Не то скачал. Качай Racket, он современный, все инструменты есть.
#114 #1024557
>>1024548
Общелисп только и жив.
#115 #1024558
>>1024557
где-то вдали заплакал Рич Хикки

Но как же все эти хипстеры с ливкодингом на реагенте? Все уже умерли?
#116 #1024560
>>1024557
Очень смешно. Где вакансии? Где компании его использующие? Где проекты? Где сообщество?
#117 #1024562
>>1024558

>хипстеры с ливкодингом на реагенте


я тут
#118 #1024564
>>1024558
Не знаю, такими эзотерическими штуками не интересуюсь.
#119 #1024565
>>1024560
В гугле забанили?
#120 #1024566
>>1024562
Лейн или бут?
#121 #1024574
>>1024565
Это были не вопросы.
#122 #1024587
>>1024548
Интересно было бы пощупать что-то статически типизированное, компилирующееся в BEAM. Был YHC, но он сдох. Грустно, хоть сам садись и пиши.
#123 #1024635
>>1024403
Так его я и перестал понимать как дошёл до ковычек
#124 #1024636
>>1020368

> Иначе как сказать интерпретатору, что первый аргумент списка не функция, только пометив список.


(list a b c)
#125 #1024649
>>1024635
f(x) = x, что тут непонятного?
мимобайтоеб
#126 #1024692
>>1024397

> А подробнее про это где пишут?


Смотри здесь: >>1024134
20 Кб, 439x459
#127 #1024922
Решил почитать СИКП и в первой же главе застрял.
Упражнение

>Какой результат напечатает интерпретатор в ответ на каждое из них?



Что это за строчка как мне её понять?
#128 #1024928
>>1024922
Наркоман штоле аль не выспался? Равенство конечно. Печатать будет булевские значения обычно, True аль False.
#129 #1024931
>>1024928
Ну у меня же выше a равно трем, а b четырем.
Разве нет?
#130 #1024934
>>1024931
Ладно. В общем, по скольку, они неравны то значением этого выражения будет False.
#131 #1024935
>>1024934
Я понял наверно, спасибо.
#132 #1024963
Может и мне поможете?
>>1024961
В чем моя проблема?
#133 #1024992
Не могу в racket считать ввод с терминала. Как-то там все запутано. Необходимо получить ввод 3 чисел с терминала в функцию, то есть функция принимает 3 аргумента. Пытался делать так (function (read-line)), но ничего не получается. Может нужно вставить read-line в объявление функции?
#134 #1025003
>>1024922
a == b
#135 #1025323
http://www.lambdanative.org/

Пробовал кто?
102 Кб, 1542x540
#136 #1025324
>>1025323
Картинка выглядит сомнительно, да еще и исследование 2000 года.
#137 #1025445
>>1024692
Предлагаешь ещё одну книг прочитать? Не нашёл в оглавлении упоминания про кавычки.
#138 #1025494
>>1025445
Предлагаю перед чтением любой книги открывать черепную коробку и вставлять туда мозг.
#139 #1025500
>>1025323
Индусы пишут на лишпе?
#140 #1025553
>>1025500
Университет Британской Колумбии (UBC), на курсере есть их курсы, по программе HTDP, на Racket.
#141 #1025555
>>1025445
Это не такое важное, чтобы в оглавлении было.
#142 #1026369
>>1025445
Глава 1
#143 #1027567
Думаю вкатиться в sicp, затем в кложу. Насколько сильно схем и кложа отличаются?
#144 #1027583
>>1027567
Примерно как си и жаба. Или, что точнее, как схема и жаба.
#146 #1027901
Вопрос от ньюфага, чтобы запустить scheme мне нужно его добавить в DrRacket извне? Я запустил учебный язык, но это не совсем то, не хочет принимать (define x (cons 1 2)), например.
45 Кб, 488x294
#147 #1027904
Это что за хуйня
#148 #1027918
>>1027904

>HomeLisp


Это что за хуйня?
#149 #1027920
>>1027904
А что это за значок? Ты что халфлюфе третий делаешь?
#150 #1027922
>>1027918
Лисп для домохозяек.
#151 #1027923
>>1027922
>>1027918
Дайте ссылку на норм лисп. 24 часа назад в программирование вкатился
#152 #1027931
>>1027901
Первая строка кода определяет используемый язык, для Racket будет #lang racket. Можно еще менять в настройках среды Dr. Racket.
#154 #1027939
>>1027931
read: #lang not enabled in the current context

не помогло
#155 #1027940
>>1027939
Открываем официальный сайт и смотрим примеры кода. Видим следующее

#lang racket

(require 2htdp/image) ; draw a picture
(let sierpinski ([n 8])
(cond
[(zero? n) (triangle 2 'solid 'red)]
[else (define t (sierpinski (- n 1)))

http://racket-lang.org/
#156 #1027941
>>1027940
Да я только что сам разобрался, спасибо.
В режиме ученика нельзя прописывать lang просто.
#157 #1030060
Решал задачки с 4clojure.com. Наткнулся на такую:
((fn foo [x] (when (> x 0) (conj (foo (dec x)) x))) 5)
что будет на выходе?
Ответ: [5 4 3 2 1] - какого хуя? Разве функция foo не должна сработать до функции conj? Если так, то foo должно вызваться 5 раз, и затем, когда в foo передастся (dec 1), должна начаться свертка рекурсии, функция conj сработает для х = 1 и пустого вектора, затем для х = 2 и вектора [1], добавив 2 в конец нового вектора, т.е. уже будет [1 2] и т.д. Т.е. на выходе имеем вектор [1 2 3 4 5]. Так какого хуя ответ - [5 4 3 2 1]?
Разве в кложе не аппликативный порядок вычислений, а нормальный?
#158 #1030064
>>1030060
А, все понял. Просто я тупой.
Аппликативный порядок как раз и подразумевает, что сначала вычисляется conj, а затем вычисляется foo. И каждый раз идет присоединение к (foo x) значения x + 1. Спасибо за помощь!
#159 #1030065
Чет сложно в кложуру вкатиться.
Емакс страшный, лайт тейбл мертвый, найткод аскетичный, а в атоме все через задницу, даже proto-repl нормально не работает.
Не опускаться же до вима.
#161 #1030070
>>1030067
И спейс, и акву пробовал — какое-то оно для пришельцев. Я несколько раз пытался вкатиться в емаксы, каждый раз хотелось убежать.
#162 #1030130
>>1030070
Саблайм с плагином SublimeRepl.
#163 #1030148
>>1030070
вкатывайся еще, с первого раза мало кто осиливает
#164 #1030203
>>1030065
И редактор, в общем-то, не самая большая проблема. Самая большая проблема в том, что я не могу понять, как заставить связку редактор-консоль-figwheel-cljsrepl-браузер работать.

Запустил простой проект. `lein figwheel` включается в режиме cljs-repl, выражения вида `(.log js/console "Hello World")` дают ожидаемый результат в браузерной консоли.
LightTabe подключается с этому фигвилу, но в режиме clj-repl — в результате `(printl "Hello world")` печатает строку в терминале, а не в браузере, и js/X объекты мне не доступны. Подключение через nREPL в атоме приводит к такому же результату.

Если же запустить proto-repl, и уже в нем вручную импортировать figwheel-sidecar и запустить сам фигвил — все работает как надо. Но делать так каждый раз не весело будет.
#165 #1030216
>>1030203
А зачем тебе печатать строку в браузере?
#166 #1030220
>>1030216
Строка — самый простой пример. Меня больше интересуют извращения с re-frame/dispatch.
Допустим, я хочу протестировать некую последовательность событий. Как мне это сделать?
Вариант 1: протыкать все кнопки вручную.
Вариант 2: сохранить в редакторе`#_(dispatch-some-events)` и исполнять это выражение в cljs-repl по мере надобности.
#167 #1030360
>>1030065
Похапэ ждет тебя.
#168 #1030446
>>1030203
ну вроде как фигвил имеет свой собственный репл независимый от cljs-repl. Поэтому там проблемы с их линковкой. Если получится завязать фигвиловский репл с каким-нибудь редактором то отпиши в тред плизики :3
#169 #1030820
>>1030446
И так убил на это слишком много времени, больше возиться как-то не хочется.
Пока остановился на таком варианте:
В терминале — `rlwrap lein repl`, `(figwheel-sidecar.repl-api/start-figwheel!)`.
В атоме — подключаю proto-repl через nREPL, `(cljs-repl)`.
Многовато лишних движений(аж целых 2!), репл работает медленновато, но терпимо. Еще надо протестировать, как эта связка поведет себя при потере сети.
#170 #1031095
Почему потенциал по написанию DSL на лиспе обычно так и не используется, а код пишут именно на лиспе?
#171 #1031310
>>1031095
Может потому, что это лисперы любят делать eDSL?
#172 #1031637
>>1031095
[:span {:class "foo"} "bar"] — что это, если не DSL?
DSL не обязан быть полностью отличным от основного языка. Кому надо — могут обмазываться reader macros и превратить лишп в хачкель, но часто ли это требуется?
#173 #1031674
>>1031637

>[:span {:class "foo"} "bar"]


Как это прочитать? Вектор объектов?
#174 #1031718
>>1031674
Это читается "декларация html-элемента, который должен отрендериться как <span class="foo">bar</span>". Синтаксически это просто гетерогенный вектор, но по сути это DSL.
#175 #1031912
Я в емаксе работаю, думаю даже не буду заморачиваться с попытками фигвил подружить и редактор, там какая-то черная магия
#176 #1033356
Насколько разработка приложений на лиспе медленней аналогичных на питоне. И насколько она быстрее(быстрее ли) чем разработка на java?
#177 #1033769
>>1033356
Кода на лиспе значительно меньше, но быстрее ли его писать, думаю не сильно, на джаве можно огромными кучами кода ворочать в всяких модных IDE, при должном скилле думаю весляр с 20 летним опытом на жабе будет офигенски быстро генерить кодяру для какого-то фреймворка.
Лисп не за скорость разработки любят, за скорость разработки можно любить пайтон и руби и я слышал перл
#178 #1034121
Интересно, а кто-нибудь тут работает Clojure-программистом? На всю Россию одна вакансия в Москве и всё. Вроде и хочется изучить, но какой профит?
#179 #1034785
>>1033356
В современном мире скорости написания примерно одинаковы: в лиспе код за тебя пишут макросы, в других языках - IDE.
#180 #1035021
>>1034785
Я говорил не про скорость написания кода, а про скорость разработки приложений.
#181 #1038484
>>1035021
Дурацкий вопрос, субъективщина. Сам попробуй и прикинь нравицца тебе или не
#182 #1038558
>>1011075
А какие именно у хаскеля проблемы с IO?
#183 #1038632
В чем фишка лиспа? Сейчас же в каждом втором языке есть лямбда-выражения. Чем он лучше скажем JavaScript'а?
#184 #1038633
>>1038632

>фишка лиспа


Homoiconicity via S-expressions.
#185 #1038684
>>1038632
Язык для операционной системы Emacs.
#186 #1038741
>>1038632
Метапрограммирование, компиляция кода в риалтайме, интерактивность системы с горячей подгрузкой кода.
#187 #1038744
>>1034785

>В современном мире скорости написания примерно одинаковы


Нет конечно. У лимпа цикл "исправить ошибку - перезапустить" гораздо меньше, за счет этого скорость разработки приложений выше.
#188 #1038802
>>1038633
И какой от этого профит?

>>1038684
Лучше бы в этой системе был InelliSense и рефакторинг.

>>1038741

>Метапрограммирование,


Есть в C++

>компиляция кода в риалтайме,


Есть в Java и C#.

>интерактивность системы с горячей подгрузкой кода.


Есть в JavaScript и Python, в Java тоже можно подгружать классы.
#189 #1038820
>>1038802

>Есть в ...


В лиспе оно есть все сразу, сделано нормально, и органически сочетается друг с другом, благодаря чему возникает синергетический эффект.
#190 #1038827
>>1038820
Синтаксис ебанутый, неудобные скобочки везде, где надо и не надо.
#191 #1038884
>>1038802

>И какой от этого профит?


-> >>1038741
сам попробуй
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 16 августа 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски