Аватар для aekuznecov
33 / 33 / 17
Регистрация: 25.03.2013
Сообщений: 520
Записей в блоге: 5

Clojure Lisp для новичка в ФП

22.09.2016, 14:15. Показов 4250. Ответов 37

Студворк — интернет-сервис помощи студентам
Всем привет, уважаемые форумчане. Прочитал очень много тем на форуме про Lisp и мне захотелось его изучить. Сам я пишу на Java и C#, с ФП никогда до этого еще не сталкивался. Имеется у меня и sicp, и let over lambda и много других книг, что здесь советовали, но я не знаю с чего начать. Из диалектов понравился Clojure, т.к. JVM, и сам Common Lisp. Отсюда вытекает вопрос - если перед изучением Clojure я прочту SICP, Let over Lambda, Мир Лиспа и им подобные, то не возникнет ли у меня проблем при освоении этого диалекта Lisp? Или стоит просто прочитать книги по Clojure, а на остальные не обращать внимания? Что вообще почитать по ФП? Спасибо за советы и ваши мысли.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.09.2016, 14:15
Ответы с готовыми решениями:

C++ для новичка-не новичка
Знал с++, забросил - теперь опять. Но есть проблема что я знал с++ для дос, а мне нужен си для линукс-виндовс - то что можно продать. Я...

Книги или другой источник, где описана история версий Lisp и Common Lisp
Доброго времени суток.Такой вопрос,знаете какой-нибудь источник,где описана история версий Lisp и Common Lisp.Только не всякие...

Организация циклов в Lisp (bee lisp demo)
разбираюсь с простыми задачами, эти пока не знаю, как решать... помогите пожалуйста. 1. Слова в предложении разделены пробелами....

37
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
23.09.2016, 13:24
Студворк — интернет-сервис помощи студентам
aekuznecov, почитал твою тему в соответствующем разделе, лично я как маленький живу на Винде с Хаскель платформой, стаком не пользуюсь - пакеты (которые ставятся на Винду без ругани) ставлю кабал-инсталлом, Атомами-Саблаймами не пользуюсь, набираю кот в виндовом блокноте (даже не ++, а обычном стандартном, где ничего нет), и мне хватает - я же только балуюсь Хотя у меня ИнтелжИдея с плагином умеет красиво подсвечивать хаскельный кот, а подключенный к ней хлинт даже подсказывает как оптимальнее записать те или иные конструкции, но Идея тааак медленно стартует, что я для хаскеля ее и не запускаю. Но ты джавист, у тебя она вообще может на компе не закрывается, поэтому может и пойдет
1
 Аватар для aekuznecov
33 / 33 / 17
Регистрация: 25.03.2013
Сообщений: 520
Записей в блоге: 5
23.09.2016, 13:32  [ТС]
_Ivana, у меня idea только на работе открыта, и то я стараюсь редко ей пользоваться, потому что мне удобнее что-то вписать через notepad/sublime, скомпилить через javac и потом проверить в тестовой среде все что я внес
грубо говоря, можно ставить себе Haskell Platform и просто не париться и читать книги + решать задачки?
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
23.09.2016, 13:43
Цитата Сообщение от aekuznecov Посмотреть сообщение
грубо говоря, можно ставить себе Haskell Platform и просто не париться и читать книги + решать задачки?
Если ты на Винде - то я бы для начала посоветовал делать именно так. Когда дорастешь до серьезного использования - возможно надо будет ставить/осваивать стак и Линукс. Но для начала и Винды платформа имхо идеальна. Единственно что, реши где будешь тексты кода набирать - но тут вариантов море, ты сам пару уже назвал, с блек-джеком и подсветками
1
 Аватар для aekuznecov
33 / 33 / 17
Регистрация: 25.03.2013
Сообщений: 520
Записей в блоге: 5
23.09.2016, 13:44  [ТС]
_Ivana, спасибо за совет и ответы буду погружаться в пучины ФП и Haskell
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
23.09.2016, 13:50
Ты это, пиши если что (С) Ну, в смысле, в хаскель раздел, по поводу решения задачек, которые вызывают трудности или вопросы. А если параллельно на Кложе или Схеме будешь их решать - то можно в этот раздел.

ЗЫ кстати, в свободное от катка время я тут накостылил свой собственный вариант Лиспа (2 реализации - на хаскеле и на джаве - с гуем и прибамбасами), функциональный, Схемо-подобный - можешь и на нем тоже попробовать решать те же задачки
1
 Аватар для aekuznecov
33 / 33 / 17
Регистрация: 25.03.2013
Сообщений: 520
Записей в блоге: 5
23.09.2016, 14:00  [ТС]
_Ivana, думаю, что как только набью руку, можем попробовать совместными усилиями допилить реализацию и сделать её крутой Это был бы очень полезный для меня опыт
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
23.09.2016, 14:08
Цитата Сообщение от cyber-satyr Посмотреть сообщение
Да, понимание haskell пригодится чтобы свободно понимать книги по clojure.
Хех. Мне кажется Clojure можно осилить без проблем и без всякого Haskell. Я, честно говоря, вообще не знаю как Haskell поможет в этом смысле. Clojure - это же динамика.

Добавлено через 38 секунд
aekuznecov, если вы писали на Java, то вам, скорее всего, лучше подойдёт и будет понятнее Clojure, чем Common Lisp.
2
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
23.09.2016, 14:09
aekuznecov, я бы тебе предложил следующее. Поставить haskell (платформу или как угодно), поставить (или открывать в онлайн-IDE) какой-нибудь из Лиспов - Clojure, Scheme, или мой Liscript (последний тебе может быть интересен как проект на джаве в том числе). И читать SICP / решать задачки из него на haskell и на выбранном лиспе. Haskell - волшебное торжество чистого ленивого иммутабельного разума функционального программирования, выбранный тобой лисп - зависит от выбора, но в большинстве своем это будет строгий (с возможностью ленивых вычислений/коллекций), чистый иммутабельный (Clojure) или с возможностью побочных эффектов/мутабельности (Scheme, Liscript) функциональный (если не ветка Common Lisp с его деривативами) язык. Сравнишь сходства и различия.
1
 Аватар для aekuznecov
33 / 33 / 17
Регистрация: 25.03.2013
Сообщений: 520
Записей в блоге: 5
23.09.2016, 14:25  [ТС]
_Ivana, значит это я Ваши статьи на Хабре нашел тогда по этому диалекту достаточно интересно было читать
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
23.09.2016, 14:30
Значит получается, не зря я их туда писал?

Ладно, вы для начала факториал напишите в нескольких вариантах:

1) рекурсивный алгоритм
2) итеративный алгоритм - хвостовая рекурсия
3) левая свертка списка по моноиду mul
4) аналогичная правая свертка
5) что еще сможете придумать

Некоторые особенности различия языков будут видны уже на этих тривиальных примерах.
1
393 / 165 / 32
Регистрация: 10.12.2015
Сообщений: 717
23.09.2016, 15:01
Цитата Сообщение от nullxdth Посмотреть сообщение
Мне кажется Clojure можно осилить без проблем и без всякого Haskell
Возможно. Просто в haskell лень и частичное применение вещи фундаментальные. Им там отводится больше внимания, а в книгах по clojure тема раскрывается, но поверхностно. Императивщику тяжело будет понять.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,766
Записей в блоге: 14
23.09.2016, 15:51
_Ivana, дайте ссылки на Ваши статьи на хабре! Мне интересно.
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
23.09.2016, 15:55
Catstail, там мало и кратко/обзорно...
https://habrahabr.ru/post/281859/ - общая про то, что оно есть
https://habrahabr.ru/post/282093/ - чуть детальнее про реализацию ТСО
5
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
24.09.2016, 12:41
Цитата Сообщение от _Ivana Посмотреть сообщение
Я на haskell сделал почти все упражнения из SICP в свое время. Очень удобно, все лениво как надо, да и кот лаконичнее Схемы раз в 5 минимум И иммутабельное ленивое ФП в полный рост
А ООП-примеры как делал? Там же всё на изменяемом состоянии завязано.
1
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,991
Записей в блоге: 32
24.09.2016, 12:55
Так у меня есть изменяемое состояние - def передефивает связанное имя в текущем окружении, set! пересетивает первое найденное вверх по иерархии словарей начиная с текущего окружения. Оба работают как по передаваемым напрямую, так и по вычисляемым символам.....

Добавлено через 15 секунд
Так, стоп, с прямым углом спутал - вы же про мои реализации на haskell Ну там я примеры с изменяемым состоянием не делал

Добавлено через 8 минут
Хотя можно было конечно сделать на State-монадах, STRef, IORef, MVar и прочих понятных снаружи страшных внутри абстракциях Зато тема про ленивые потоки просто на ура ложится на haskell
1
199 / 102 / 4
Регистрация: 16.08.2015
Сообщений: 209
25.09.2016, 12:56
Цитата Сообщение от aekuznecov Посмотреть сообщение
я хочу его освоить как небольшую замену Java на работе
Какие у вас именно цели? От этого и надо плясать.
0
 Аватар для aekuznecov
33 / 33 / 17
Регистрация: 25.03.2013
Сообщений: 520
Записей в блоге: 5
03.10.2016, 11:42  [ТС]
budden, изучить ФП на примере Scheme/CL(знаю что есть для этого либы там)/Clojure и начать мыслить немного по-другому и шире и постепенно перенести все свои задачи с Java на Lisp-семейство

Добавлено через 1 час 20 минут
и я решил сначала поближе познакомиться со Scheme и Racket из-за SICP, а после этого рулить в сторону CL и Clojureдля лучшего их понимания и более быстрого освоения
1
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,912
05.10.2016, 17:07
Цитата Сообщение от aekuznecov Посмотреть сообщение
и я решил сначала поближе познакомиться со Scheme и Racket из-за SICP
Это правильно.
1. Scheme - простой.
2. Racket - удобный (более-менее).
3. Всё равно придётся Scheme изучить, чтобы SICP читать.

Но чтобы во время чтения решать те же задачи на Haskell, желательно предварительно прочитать какую-нибудь короткую книгу про Haskell. Например, первые 6-8 глав отсюда:
http://anton-k.github.io/ru-ha... k/toc.html
Времени займёт не так много, зато будет с чем сравнивать. Если понравится, то дочитаете до конца (возможно, уже параллельно с SICP).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.10.2016, 17:07

Подскажите пожалуйста IDE для линукса (например, для кали-линукса) для новичка для обучения программированию на си++
Сейчас обучаюсь стандарту си++ 2011. Подскажите новичку, чего выбрать? Есть небольшой опыт работы в qt, в линуксе ничего еще не умею делать.

Книга для новичка
Здравствуйте! Я новичок в Pascal'e, может кто ни-будь подскажет, с какой книги начинать? Желательно, что-бы там после каждой главы задачки...

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

Робототехника для новичка
Добрый день господа! Из названия темы вы скорее всего догадались что я новичок. И хотел бы попросить помощи в виде подсказки. Какой...

SCADA для новичка
Доброе время суток! Проходил практику на гипсовом заводе и очень заинтересовало программирование на SCADA. Подскажите пожалуйста,какую...


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

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

Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru