М.Двач / Программирование

Этого треда уже нет.
Это копия, сохраненная 16 августа 2017 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

59 Кб, 639x639

Лиспотред №9 9 июня, 01:31 #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

9 июня, 01:48 #2 #1003397

>Cloje - a clone of Clojure built atop Scheme/Lisp.
https://gitlab.com/cloje/cloje

9 июня, 15:01 #3 #1003559

https://practicalli.github.io/spacemacs/
здарова чувачки

24 июня, 01:12 #4 #1010719

Скажите мне, что не так с лиспом?
Вроде такой крутой язык, а неумеет нормально с IO работать. Пара каких-то дерьмолиб и все.
Где его вообще можно применять то?

Ответы10722107381082211658

24 июня, 01:19 #5 #1010722

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

Ответы1074611151

24 июня, 03:20 #6 #1010738

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

Ответы10746

24 июня, 04:35 #7 #1010746

>>1010738
>у кложи все ок с io
java/net
Насколько я понимаю.

>>1010722
>В задачах искусственного интеллекта, конечно же.
Сложно себе представить такие задачи без интенсивного IO и параллелизма.

24 июня, 12:07 #8 #1010822

>>1010719
В функциональным языках вообще всё плохо с IO.

Ответы11075

24 июня, 12:32 #9 #1010831

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

Ответы1100911027

24 июня, 16:45 #10 #1011009

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

Ответы11096

24 июня, 17:08 #11 #1011027

>>1010831
Да. Вообще говоря любой цикл можно реализовать через (хвостовую) рекурсию.

24 июня, 18:28 #12 #1011075

>>1010822
хуево все с IO только у хаскеля из-за фанатичной чистоты. Какие проблемы у кложи или у эрланга?

Ответы38558

24 июня, 18:56 #13 #1011096

>>1011009
>запрещает
Ну он очень толсто намекает.

Ответы11276

24 июня, 20:06 #14 #1011151

>>1010722
Для таких задач есть пролог тащемта

24 июня, 22:42 #15 #1011276

>>1011096
>Ну он очень толсто намекает.
И не намекает даже.

25 июня, 11:21 #16 #1011381

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

Ответы11403

25 июня, 12:32 #17 #1011403

>>1011381
>не конкурентно способный
откуда инфа? Лиспы это много языков и на лиспах написано достаточно продуктов.

86 Кб, 946x598

25 июня, 12:58 #18 #1011410

https://www.tiobe.com/tiobe-index/

25 июня, 13:44 #19 #1011428

Аноны, какой Лисп пригоден для веба? Рассматриваю Racket и Clojure. В Racket нравится почти все, правда пока не догнал как на нем писать для веба. В Clojure не нравится JVM и запутанный веб-стек.

Ответы11431

25 июня, 13:55 #20 #1011431

>>1011428
я не юзал ракет, поэтому не могу за него советовать, я по кложе. Стек простейший, ring и compojure это все что тебе надо для того чтобы делать вебприложения. Осваиваются за пару дней. Удачи

Ответы11434

25 июня, 13:59 #21 #1011434

>>1011431
Спасибки. Мне вот почему то стек не показался простым, ну да ладно, буду бить дальше. А как насчет ClojureScript, по идее на нем можно писать под Ноду, или нет?

Ответы11453

25 июня, 14:51 #22 #1011453

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

Ответы1146511515

25 июня, 15:38 #23 #1011465

>>1011453
>Конечно можно, и к реакут ее тоже можно прикрутить.
Лучше сразу к PHP

Ответы1151511517

25 июня, 17:02 #24 #1011515

>>1011453
Спасибо.

>>1011465
К чему такой выпад? Писать на Javascript нет никакого желания, а раз уж ClojureScript компилится в Javascript, то почему бы не использовать его и на Ноде.

25 июня, 17:03 #25 #1011517

>>1011465
пацан ты походу ваще не вывозишь. Пыха это для рендеринга хтмля сервером. Мы про кложескрипт говорим, который на js хостицца. Реакт хороший фреймворк который дает няшные абстракции. Почти все библиотеки для работы над интерфейсами в кложескрипте являются сорт оф врапперами над компонентной системой реакта и это хорошо, потомушта реакт няшненький и декларативный, состояние от поведение отделяет.
Учись и просвящайся

25 июня, 17:14 #26 #1011525

Читаю СИКП и столкнулся с такой фигней, например выражение и книги

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

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

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

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

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

Ответы11534

25 июня, 17:20 #27 #1011534

>>1011525
определи функцию которая отнимает число от нуля и используй ее тут вместо минуса

Ответы1153611545

25 июня, 17:22 #28 #1011536

>>1011534
ну или просто (- 0 x) :)

Ответы1154511586

25 июня, 17:36 #29 #1011545

>>1011534
>>1011536

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

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

Непонятно как могли такое написать в СИКПе, код ведь не рабочий.

25 июня, 18:34 #30 #1011586

>>1011536
Парадокс, но как ты написал не работает, нужно наоборот, (- x 0). Это только в ифах так. Чет даже не смешно, что не так с ракетой.

25 июня, 18:59 #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))

Ну почему такая херня, они что не проверяют код.

Ответы11594

25 июня, 19:11 #32 #1011594

>>1011592
Возьми MIT Scheme и проверь

Ответы11600

25 июня, 19:22 #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/

Ответы11612

25 июня, 19:36 #34 #1011612

>>1011600

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

MIT/GNU Scheme running under OS X

1 ]=> (- 1)

;Value: -1

Ответы11616

25 июня, 19:41 #35 #1011616

>>1011612
Ну и что? Racket это бывший Scheme. Фактически это один и тот же язык. Проблема же не в языке, а в том, что кто-то неправильно дает примеры, если даже в СИКПе ошибка.

Ответы11621

25 июня, 19:56 #36 #1011621

>>1011616
Как мы видим, не один и тот же

Ответы11623

25 июня, 20:04 #37 #1011623

>>1011621
Попробуй такую функцию:

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

При вызове на отрицательном числе, будет выдавать положительное.

Ответы11636

25 июня, 20:40 #38 #1011636

>>1011623
Парень, ставь mit scheme и переставай зафлуживать тред :)

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

;Value: abs

1 ]=> (abs -33)

;Value: 33

Ответы1164311649

25 июня, 21:12 #39 #1011643

>>1011636
У тебя должно было вернуть -33, отрицательное число должно было вернуть. В том то и ошибка.

Ответы11644

25 июня, 21:15 #40 #1011644

>>1011643
Схуяли?

25 июня, 21:18 #41 #1011649

>>1011636
Все разобрался. Минус на минус дает плюс. Не понял условие, думал, что на отрицателный х должен быть отрицателный результат.

25 июня, 21:27 #42 #1011658

>>1010719
Какой именно лисп ты имеешь в виду? И что там ненормального с вводом/выводом

26 июня, 22:58 #43 #1012134

https://atom.io/packages/atom-slime
Таки дошли у кого-то руки, запилили слайм под богомерзкий атом.

Ответы12181

27 июня, 00:38 #44 #1012181

>>1012134
Хера ты очнулся, проекту 2 года уже.

Ответы12183

27 июня, 00:42 #45 #1012183

>>1012181
А он как-то до этого на глаза не попадался

2 июля, 16:42 #46 #1015108

Хочу понять как реализованы базовые функции в Scheme/Racket. Как это можно узнать? По репозиторию на гитхабе лазил, но найти там трудновато.

Ответы24134

3 июля, 07:20 #47 #1015371

На кложе можно под андроид писать?

Ответы15387156591574616861

3 июля, 09:26 #48 #1015387

>>1015371
В целом да, правда не знаю насколько удобно.

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

Можно еще писать под React Native для андроид.

3 июля, 16:29 #49 #1015659

>>1015371
Нет, горячая замена кода там чееж жопу сделана. Спасибо дальвику

Ответы16713

3 июля, 18:52 #50 #1015746

>>1015371
Вроде как есть возможность, но не стоит.

5 июля, 07:42 #51 #1016710

А десктопные приложения на кложе можно писать?

Ответы16767

5 июля, 07:53 #52 #1016713

>>1015659
На новых девайсях давно уже не dalvik, а йоба поэффективнее.

Ответы1679016813

5 июля, 10:25 #53 #1016767

>>1016710
Можно, разрешаю.

5 июля, 11:31 #54 #1016790

>>1016713
Тогда тем более

5 июля, 12:24 #55 #1016813

>>1016713
Байт-код тот же и механизмы все те же. Просто вместо JIT теперь прекомпиляция.

Ответы168351686916875

5 июля, 13:01 #56 #1016835

>>1016813
А кросскомпиляция в Котлин есть?

Ответы16875

5 июля, 13:44 #57 #1016861

>>1015371
Если уже и можно, то не нужно
https://gitlab.com/eql/EQL5-Android

5 июля, 13:52 #58 #1016869

>>1016813
>Просто вместо JIT теперь прекомпиляция.
>Просто
Для динамического языка, который тоннами создает классы в рантайме, это нихуя не просто. Раньше приходилось изъебываться генерацией dex'ов в рантайме и последующей их подгрузкой дальвиком, который далее их джитил. Теперь, насколько я понимаю, задача усложнилась и стала ещё более ресурсоемкой

5 июля, 13:56 #59 #1016875

>>1016835
Чиво блять?
>>1016813
Поправка, с 24 там ART с JIT.

23 Кб, 923x111

5 июля, 23:11 #60 #1017185

Ошибка? Должно быть просто 2, 3 и 4?

Ответы17203

5 июля, 23:44 #61 #1017203

>>1017185
В чем ошибка? В том что 1 будет применено к 2,3,4, а не 1,2,3,4?

Ответы17205

5 июля, 23:46 #62 #1017205

>>1017203
Да. 1 это не аргумент

8 июля, 11:04 #63 #1018545

http://eudoxia.me/article/common-lisp-sotu-2015

ченить за 2 года поменялось?
для ИТ срок громадный, а для говномамонта общелиспа похоже новье.

8 июля, 12:22 #64 #1018573

Анон, посоветуй гайдов по spacemacs. Второй день не могу вкатиться. Открыл гайд C-h t, а там половина шорткастов не работает, так как у меня evilmode.

Ответы1872018934

8 июля, 16:41 #65 #1018720

>>1018573
https://practicalli.github.io/

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

Собственно этот - https://practicalli.github.io/spacemacs/

Ответы18723

8 июля, 16:44 #66 #1018723

>>1018720
Спасибо.

8 июля, 21:52 #67 #1018934

>>1018573
Прям вот двачую. Так то все понятно, проме гита. Сегодня удолил весь проект, и ххуй смог откатить. Заебок.

9 июля, 00:07 #68 #1019017

Вот на Java веб-приложениях что EJB, что Spring структура одна - Controller-Service-Repository, где каждый слой отвечает за своё. Можно и иначе, но будет говнокод.
А как на Clojure писать грамотно? Будут ли подобные слои?

Ответы20840

Антон 9 июля, 18:11 #69 #1019643

Я правильно понимаю что на Common Lisp нельзя определить свой класс как потомок sequence и переопределить для него функции elt, length, etc.. ?

Антон 9 июля, 19:36 #70 #1019708

Какие есть для коммон лиспа библиотеки для удобного и современного стиля функционального программирования?
Типо как https://github.com/magnars/dash.el для Emacs Lisp.

Ответы19893

9 июля, 21:29 #71 #1019782

Все, заебался я с этой БДСМной чистотой. Возвращаюсь в стан динамикобогов.

Кложаскрипт тут обсуждается?
Какой тулинг сейчас самый модный? Кто-то пишет про figwheel, кто-то про boot-*. Что посоветуете?

9 июля, 22:14 #72 #1019893

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

Ответы19930

9 июля, 22:24 #73 #1019930

>>1019893
> мап, фильтр и редьюс на клиспе пишется за 3-4 строчки
мап(который одновременно ещё и зип) и редьюс там уже есть и так

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

> пишется за 3-4 строчки
Ну так кто-то должен был уже написать

Ответы24416

9 июля, 22:59 #74 #1019959

Как то после сиподобных языков кложа сложно заходит, до сих пор не могу въехать в хешмапы.

5 Кб, 214x137

9 июля, 23:24 #75 #1019974

Читаю сикп. До главы с ковычкой всё было понятно. Но что значит эта кавычка? Видел (error "какой-то текст") Значит одинарная кавычка это не строка, а что-то другое. Но ведёт себя похоже. Вот например тут во втором примере куда-то пропал символ пробела между a и b ходя тожна была пропасть только a если бы эта кавычка была просто строкой.

Ответы2003620257

10 июля, 00:54 #76 #1020036

>>1019974
> Читаю сикп
лучше перед сикпом почитай хотя бы какие-то основы по лиспу или схеме
иначе будешь кучу таких дурацких вопросов задавать

Ответы24397

10 июля, 11:56 #77 #1020257

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

Ответы2027424397

10 июля, 12:10 #78 #1020274

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

Ответы2036820439

10 июля, 14:36 #79 #1020368

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

Ответы24636

10 июля, 16:02 #80 #1020439

>>1020274
Не через жопу, а семантика. quote + eval - одна из многих фич лиспа, перекочевавшая в эти ваши JS и PHP.

Ответы20498

10 июля, 17:01 #81 #1020498

>>1020439
> в эти ваши JS и PHP
Сам то на чем пишешь?

Ответы20521

10 июля, 17:23 #82 #1020521

>>1020498
На всем, до чего руки дотянутся.

Ответы20522

10 июля, 17:24 #83 #1020522

>>1020521
А на эликсире писал?

Ответы21041

10 июля, 23:14 #84 #1020840

>>1019017
бамп

11 июля, 00:35 #85 #1020917

Сегодня поигрался с коммон лиспом. Понравился синтаксис, но названия функций просто мрак. Потом брмбануло, и я дропнул. Попробую схемку. Анон, что подскажешь? Знаю руби и жс

Ответы2100921382215442414424360

11 июля, 07:28 #86 #1021009

>>1020917
дропнул из-за названий, ты еблан?

Ответы21426

11 июля, 09:43 #87 #1021041

>>1020522
Только поигрался с ним один вечерок.

Ответы2436024480

11 июля, 18:05 #88 #1021382

>>1020917
Clojure.

11 июля, 19:22 #89 #1021426

>>1021009
Ну чего сразу обзываться-то? Вот в рубях отличные названия, а в космонавтов говно

Ответы2142721487

11 июля, 19:23 #90 #1021427

>>1021426
Блин какие космонавты. В коммоне

11 июля, 20:21 #91 #1021487

>>1021426
Как макросы освоишь, так перестанешь обращать внимание на названия и познаешь истинный дзен диска.

11 июля, 21:09 #92 #1021544

>>1020917
> названия функций просто мрак
>брмбануло
чет лол

13 июля, 15:40 #93 #1024134

>>1015108
ns.synrc.com/publications/cat/CPS/lisp.pdf

Ответы24692

13 июля, 15:50 #94 #1024144

>>1020917
Что за названия такие? car / cdr?

Ответы24221

13 июля, 17:56 #95 #1024221

>>1024144
Точечная пара состоит из двух регистров address и decrement. Эти функции отдают содержимое этих регистров, contents of address/decrement register - car/cdr

13 июля, 20:41 #96 #1024360

>>1020917
>Понравился синтаксис
>названия функций просто мрак
>Знаю руби и жс
Хеллоуворлдщиков с необсохшим смуззи на губах нам ещё не хватало.
>>1021041
Ты так со всеми языками """"""""""""знакомишься"""""""""""""""?

Ответы24481

13 июля, 21:16 #97 #1024397

>>1020036
pcl читал, но дропнул через сотню страниц т.к. захотел класику

>>1020257
А подробнее про это где пишут? Чтобы прям по шагам разбирали как строчки с этой кавычкой интерпритатор обрабатывает.

Ответы2440324692

13 июля, 21:21 #98 #1024403

>>1024397
Читай ебаный SICP

Ответы24635

13 июля, 21:27 #99 #1024414

У каких кложуроредакторов есть приличная поддержка удаленной разработки?
В atom+nuclide можно добавлять удаленные проекты, в емаксе есть tramp. Что еще есть?

Ответы24418

13 июля, 21:27 #100 #1024416

>>1019930
>А вот фильтра нет.
remove-if же
>И партиал-аппликате и функшон-сомпозе
Это уже в александрии есть

13 июля, 21:29 #101 #1024418

>>1024414
Зачем тебе что-то ещё?

Ответы24427

13 июля, 21:34 #102 #1024427

>>1024418
Емакс мне просто не нравится. Нуклиде требует установки серверной части. Хочется и простоту(например, подключение и копирование поверх SSH), и приятный редактор.

13 июля, 22:10 #103 #1024480

>>1021041
А хрен ли с этим элексиром дольше знакомиться-то, если уже хорошо знаком с эрлангом и хачкелем?

Ответы24481

13 июля, 22:11 #104 #1024481

>>1024360
>>1024480

13 июля, 22:26 #105 #1024500

Лисперы, кто-нибудь писал на Joxa иди LFE?

Ответы24538

13 июля, 22:30 #106 #1024505

Джентльмены, я тут пытаюсь в СИКП, накатал свою парашу в scheme, а как запустить своё творение - не могу понять.

Ответы24537

13 июля, 22:40 #107 #1024515

Из терминала или из среды Dr. Racket. В терминале можно raco make <имя файла> или raco exe <имя файла>

Только узнал, что raco может декомпилировать байткод, надо будет попробовать.

13 июля, 23:05 #108 #1024537

>>1024505
А куда ты его катал, еслм не знаешь как запустить? Реплом не польхуешься что ли сука?

Ответы24542

13 июля, 23:05 #109 #1024538

>>1024500
Не нужны

Ответы24548

13 июля, 23:08 #110 #1024542

>>1024537
Скачал с сайта MIT Scheme и начал писать, но от него ни ответа ни привет, даже числа складывать не хочет.

Ответы2454624550

13 июля, 23:14 #111 #1024546

>>1024542
Ну дык результат вычисления выражений только в репле сам выводится, а ты ж небось ему файл скармливаешь. В любом случае, рекомендую скачать drRacket как более дружелюбную для новичков среду

13 июля, 23:18 #112 #1024548

>>1024538
Виртуальная машина Эрланга очень даже располагает писать под нее. Какие сейчас лиспы живы кроме кложур?

Ответы2455724587

13 июля, 23:19 #113 #1024550

>>1024542
Не то скачал. Качай Racket, он современный, все инструменты есть.

13 июля, 23:24 #114 #1024557

>>1024548
Общелисп только и жив.

Ответы2455824560

13 июля, 23:26 #115 #1024558

>>1024557
где-то вдали заплакал Рич Хикки

Но как же все эти хипстеры с ливкодингом на реагенте? Все уже умерли?

Ответы2456224564

13 июля, 23:34 #116 #1024560

>>1024557
Очень смешно. Где вакансии? Где компании его использующие? Где проекты? Где сообщество?

Ответы24565

13 июля, 23:38 #117 #1024562

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

Ответы24566

13 июля, 23:39 #118 #1024564

>>1024558
Не знаю, такими эзотерическими штуками не интересуюсь.

13 июля, 23:41 #119 #1024565

>>1024560
В гугле забанили?

Ответы24574

13 июля, 23:44 #120 #1024566

>>1024562
Лейн или бут?

13 июля, 23:55 #121 #1024574

>>1024565
Это были не вопросы.

14 июля, 00:38 #122 #1024587

>>1024548
Интересно было бы пощупать что-то статически типизированное, компилирующееся в BEAM. Был YHC, но он сдох. Грустно, хоть сам садись и пиши.

14 июля, 03:38 #123 #1024635

>>1024403
Так его я и перестал понимать как дошёл до ковычек

Ответы24649

14 июля, 03:42 #124 #1024636

>>1020368
> Иначе как сказать интерпретатору, что первый аргумент списка не функция, только пометив список.
(list a b c)

14 июля, 06:15 #125 #1024649

>>1024635
f(x) = x, что тут непонятного?
мимобайтоеб

14 июля, 08:53 #126 #1024692

>>1024397
> А подробнее про это где пишут?
Смотри здесь: >>1024134

Ответы25445

20 Кб, 439x459

14 июля, 15:51 #127 #1024922

Решил почитать СИКП и в первой же главе застрял.
Упражнение
>Какой результат напечатает интерпретатор в ответ на каждое из них?

Что это за строчка как мне её понять?

Ответы2492825003

14 июля, 16:01 #128 #1024928

>>1024922
Наркоман штоле аль не выспался? Равенство конечно. Печатать будет булевские значения обычно, True аль False.

Ответы24931

14 июля, 16:04 #129 #1024931

>>1024928
Ну у меня же выше a равно трем, а b четырем.
Разве нет?

Ответы24934

14 июля, 16:07 #130 #1024934

>>1024931
Ладно. В общем, по скольку, они неравны то значением этого выражения будет False.

Ответы24935

14 июля, 16:09 #131 #1024935

>>1024934
Я понял наверно, спасибо.

14 июля, 16:53 #132 #1024963

Может и мне поможете?
>>1024961
В чем моя проблема?

14 июля, 17:53 #133 #1024992

Не могу в racket считать ввод с терминала. Как-то там все запутано. Необходимо получить ввод 3 чисел с терминала в функцию, то есть функция принимает 3 аргумента. Пытался делать так (function (read-line)), но ничего не получается. Может нужно вставить read-line в объявление функции?

14 июля, 18:06 #134 #1025003

>>1024922
a == b

15 июля, 05:03 #135 #1025323

http://www.lambdanative.org/

Пробовал кто?

Ответы2532425500

102 Кб, 1542x540

15 июля, 06:37 #136 #1025324

>>1025323
Картинка выглядит сомнительно, да еще и исследование 2000 года.

15 июля, 16:55 #137 #1025445

>>1024692
Предлагаешь ещё одну книг прочитать? Не нашёл в оглавлении упоминания про кавычки.

Ответы254942555526369

15 июля, 19:07 #138 #1025494

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

15 июля, 19:16 #139 #1025500

>>1025323
Индусы пишут на лишпе?

Ответы25553

15 июля, 20:26 #140 #1025553

>>1025500
Университет Британской Колумбии (UBC), на курсере есть их курсы, по программе HTDP, на Racket.

15 июля, 20:26 #141 #1025555

>>1025445
Это не такое важное, чтобы в оглавлении было.

17 июля, 11:01 #142 #1026369

>>1025445
Глава 1

17 июля, 22:45 #143 #1027567

Думаю вкатиться в sicp, затем в кложу. Насколько сильно схем и кложа отличаются?

Ответы27583

17 июля, 23:24 #144 #1027583

>>1027567
Примерно как си и жаба. Или, что точнее, как схема и жаба.

18 июля, 16:37 #145 #1027884

http://www.red-lang.org/2017/07/063-macos-gui-backend.html

18 июля, 17:06 #146 #1027901

Вопрос от ньюфага, чтобы запустить scheme мне нужно его добавить в DrRacket извне? Я запустил учебный язык, но это не совсем то, не хочет принимать (define x (cons 1 2)), например.

Ответы27931

45 Кб, 488x294

18 июля, 17:11 #147 #1027904

Это что за хуйня

Ответы2791827920

18 июля, 17:27 #148 #1027918

>>1027904
>HomeLisp
Это что за хуйня?

Ответы2792227923

18 июля, 17:29 #149 #1027920

>>1027904
А что это за значок? Ты что халфлюфе третий делаешь?

18 июля, 17:30 #150 #1027922

>>1027918
Лисп для домохозяек.

Ответы27923

18 июля, 17:34 #151 #1027923

>>1027922
>>1027918
Дайте ссылку на норм лисп. 24 часа назад в программирование вкатился

Ответы27933

18 июля, 17:49 #152 #1027931

>>1027901
Первая строка кода определяет используемый язык, для Racket будет #lang racket. Можно еще менять в настройках среды Dr. Racket.

Ответы27939

18 июля, 17:52 #153 #1027933

>>1027923
https://clojure.org/

18 июля, 18:01 #154 #1027939

>>1027931
read: #lang not enabled in the current context

не помогло

Ответы27940

18 июля, 18:05 #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/

Ответы27941

18 июля, 18:07 #156 #1027941

>>1027940
Да я только что сам разобрался, спасибо.
В режиме ученика нельзя прописывать lang просто.

23 июля, 11:32 #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]?
Разве в кложе не аппликативный порядок вычислений, а нормальный?

Ответы30064

23 июля, 11:47 #158 #1030064

>>1030060
А, все понял. Просто я тупой.
Аппликативный порядок как раз и подразумевает, что сначала вычисляется conj, а затем вычисляется foo. И каждый раз идет присоединение к (foo x) значения x + 1. Спасибо за помощь!

23 июля, 11:50 #159 #1030065

Чет сложно в кложуру вкатиться.
Емакс страшный, лайт тейбл мертвый, найткод аскетичный, а в атоме все через задницу, даже proto-repl нормально не работает.
Не опускаться же до вима.

Ответы300673020330360

23 июля, 11:53 #160 #1030067

>>1030065
http://spacemacs.org/

Ответы30070

23 июля, 11:58 #161 #1030070

>>1030067
И спейс, и акву пробовал — какое-то оно для пришельцев. Я несколько раз пытался вкатиться в емаксы, каждый раз хотелось убежать.

Ответы3013030148

23 июля, 15:28 #162 #1030130

>>1030070
Саблайм с плагином SublimeRepl.

23 июля, 16:03 #163 #1030148

>>1030070
вкатывайся еще, с первого раза мало кто осиливает

23 июля, 18:24 #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 и запустить сам фигвил — все работает как надо. Но делать так каждый раз не весело будет.

Ответы3021630446

23 июля, 18:58 #165 #1030216

>>1030203
А зачем тебе печатать строку в браузере?

Ответы30220

23 июля, 19:07 #166 #1030220

>>1030216
Строка — самый простой пример. Меня больше интересуют извращения с re-frame/dispatch.
Допустим, я хочу протестировать некую последовательность событий. Как мне это сделать?
Вариант 1: протыкать все кнопки вручную.
Вариант 2: сохранить в редакторе`#_(dispatch-some-events)` и исполнять это выражение в cljs-repl по мере надобности.

24 июля, 00:07 #167 #1030360

>>1030065
Похапэ ждет тебя.

24 июля, 09:46 #168 #1030446

>>1030203
ну вроде как фигвил имеет свой собственный репл независимый от cljs-repl. Поэтому там проблемы с их линковкой. Если получится завязать фигвиловский репл с каким-нибудь редактором то отпиши в тред плизики :3

Ответы30820

24 июля, 20:49 #169 #1030820

>>1030446
И так убил на это слишком много времени, больше возиться как-то не хочется.
Пока остановился на таком варианте:
В терминале — `rlwrap lein repl`, `(figwheel-sidecar.repl-api/start-figwheel!)`.
В атоме — подключаю proto-repl через nREPL, `(cljs-repl)`.
Многовато лишних движений(аж целых 2!), репл работает медленновато, но терпимо. Еще надо протестировать, как эта связка поведет себя при потере сети.

25 июля, 11:35 #170 #1031095

Почему потенциал по написанию DSL на лиспе обычно так и не используется, а код пишут именно на лиспе?

Ответы3131031637

25 июля, 16:24 #171 #1031310

>>1031095
Может потому, что это лисперы любят делать eDSL?

25 июля, 21:42 #172 #1031637

>>1031095
[:span {:class "foo"} "bar"] — что это, если не DSL?
DSL не обязан быть полностью отличным от основного языка. Кому надо — могут обмазываться reader macros и превратить лишп в хачкель, но часто ли это требуется?

Ответы31674

25 июля, 22:33 #173 #1031674

>>1031637
>[:span {:class "foo"} "bar"]
Как это прочитать? Вектор объектов?

Ответы31718

25 июля, 23:45 #174 #1031718

>>1031674
Это читается "декларация html-элемента, который должен отрендериться как <span class="foo">bar</span>". Синтаксически это просто гетерогенный вектор, но по сути это DSL.

26 июля, 12:47 #175 #1031912

Я в емаксе работаю, думаю даже не буду заморачиваться с попытками фигвил подружить и редактор, там какая-то черная магия

28 июля, 17:27 #176 #1033356

Насколько разработка приложений на лиспе медленней аналогичных на питоне. И насколько она быстрее(быстрее ли) чем разработка на java?

Ответы3376934785

29 июля, 09:38 #177 #1033769

>>1033356
Кода на лиспе значительно меньше, но быстрее ли его писать, думаю не сильно, на джаве можно огромными кучами кода ворочать в всяких модных IDE, при должном скилле думаю весляр с 20 летним опытом на жабе будет офигенски быстро генерить кодяру для какого-то фреймворка.
Лисп не за скорость разработки любят, за скорость разработки можно любить пайтон и руби и я слышал перл

29 июля, 21:09 #178 #1034121

Интересно, а кто-нибудь тут работает Clojure-программистом? На всю Россию одна вакансия в Москве и всё. Вроде и хочется изучить, но какой профит?

31 июля, 11:32 #179 #1034785

>>1033356
В современном мире скорости написания примерно одинаковы: в лиспе код за тебя пишут макросы, в других языках - IDE.

Ответы3502138744

31 июля, 19:13 #180 #1035021

>>1034785
Я говорил не про скорость написания кода, а про скорость разработки приложений.

Ответы38484

5 авг, 14:31 #181 #1038484

>>1035021
Дурацкий вопрос, субъективщина. Сам попробуй и прикинь нравицца тебе или не

5 авг, 17:19 #182 #1038558

>>1011075
А какие именно у хаскеля проблемы с IO?

5 авг, 18:40 #183 #1038632

В чем фишка лиспа? Сейчас же в каждом втором языке есть лямбда-выражения. Чем он лучше скажем JavaScript'а?

Ответы386333868438741

5 авг, 18:43 #184 #1038633

>>1038632
>фишка лиспа
Homoiconicity via S-expressions.

Ответы38802

5 авг, 19:47 #185 #1038684

>>1038632
Язык для операционной системы Emacs.

Ответы38802

5 авг, 21:51 #186 #1038741

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

Ответы3880238884

5 авг, 21:53 #187 #1038744

>>1034785
>В современном мире скорости написания примерно одинаковы
Нет конечно. У лимпа цикл "исправить ошибку - перезапустить" гораздо меньше, за счет этого скорость разработки приложений выше.

5 авг, 23:51 #188 #1038802

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

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

>>1038741
>Метапрограммирование,
Есть в C++
>компиляция кода в риалтайме,
Есть в Java и C#.
>интерактивность системы с горячей подгрузкой кода.
Есть в JavaScript и Python, в Java тоже можно подгружать классы.

Ответы3882038884

6 авг, 00:23 #189 #1038820

>>1038802
>Есть в ...
В лиспе оно есть все сразу, сделано нормально, и органически сочетается друг с другом, благодаря чему возникает синергетический эффект.

Ответы38827

6 авг, 00:46 #190 #1038827

>>1038820
Синтаксис ебанутый, неудобные скобочки везде, где надо и не надо.

6 авг, 07:53 #191 #1038884

>>1038802
>И какой от этого профит?
-> >>1038741
сам попробуй

Тред утонул или удален.
Это копия, сохраненная 16 августа 2017 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion