LINUX.ORG.RU

[FP] Помогите с выбором языка для ФП


0

4

Здравствуйте, пожалуйста порекомендуйте какой язык выбрать из списка и по возможности книгу/туториал по нему, скажите какие у него перед остальными плюсы: - Erlang - Scala - Clojure - Scheme - OCaml Или что-то другое. Python не предлагать, как впрочем и Haskell. Если язык не из списка - то интересует именно инопланетный синтаксис и возможность писать на чистом ФП. Желательно, чтобы язык был не чисто академическим, имелась возможность работы с тулкитами (Qt, GTK, Tk).

Изучать собрался пока ради удовольствия, потом буду использовать в работе и реализации пары OpenSource проектов «для себя». Заранее спасибо.

p.s.: А Refal еще жив? Может он шевелится и имеет связки с тулкитами и прочим?


А вспонился ещё один язык с инопланетным синтаксисом - XSLT, можно сделать связку Tcl/Tk для IO, GUI и event-loop и XSLT для обработки данных.

Begemoth ★★★★★
()

Вообще-то зависит от того, какая у тебя «работа». Требуется ли в ней JVM, подойдет ли VM эрланга.

tailgunner ★★★★★
()

Если тебя интересует «инопланетный синтаксис и возможность писать на чистом ФП» то бери хаскель.

Или еще лучше agda2.

Все остальное из твоего списка не чистое ФП. Да и синтакс у той же скалы далеко не «инопланетный».

Еще можно посмотреть nemerle. Под виндой у него есть вполне хорошая интеграция с VS2008. Плюс есть Nemerle Studio полностью бесплатная ИДЕ.

winduzyatnik
()
Ответ на: комментарий от winduzyatnik

Еще можно посмотреть nemerle. Под виндой у него есть вполне хорошая интеграция с VS2008. Плюс есть Nemerle Studio полностью бесплатная ИДЕ.

А Nemerle жив? F# и Visual Studio Shell не лучше будут?

Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth

Еще как жив. И активно идет к релизу.

Смотри активность в СВН: https://code.google.com/p/nemerle/source/list

F# и Visual Studio Shell не лучше будут?

Нет не лучше. F# гораздо слабее как язык. Visual Studio Shell для немерла тоже есть. Собственно Nemerle Studio на нем и основана.

winduzyatnik
()

refal еще вроде жив в некоторых местах...

насчет инопланетного синтаксиса, то стоит посмотреть на J ;-)

ott ★★★★★
()

А куда анонимуса дели? Это навсегда или только на первое апреля?

По теме - бери Racket.

ocid
()
Ответ на: комментарий от Begemoth

Haskell изучал, не сильно понравился

z0rk
() автор топика
Ответ на: комментарий от Begemoth

Да нет, вполне инопланетный. Хотя эрланг ИМХО менее понятен

z0rk
() автор топика

Games destroyed my life...
But I have got another 2 lives left! :-)

[толсто]ПРОЛ2 же!

Языков есть столько, что не стоит их учить все сразу, надо что-то полезное написать на чем-то одном. Меньше всего головной боли, если использовать (C/C++ && GTK+) или (C++ && Qt4) [или Python && (GTK+ || Qt4), но забраковали сразу в списке? :-)].
Ибо на всё-всё жизни не хватит.
Что писать собрались-то?

blinkenlichten
()
Ответ на: комментарий от blinkenlichten

Цель именно саморазвитие и освоение языка с трудночитаемым синтаксисом. Си знаю. Питон юзал - не впечатлил. Писать - проги очень тесно связанные с текстом и обработкой текстов (одна), вторая - тесно связанная с теорией игр, матмоделями и графами

z0rk
() автор топика
Ответ на: комментарий от z0rk

> освоение языка с трудночитаемым синтаксисом

Что за бред? Как тут минусовать?

Писать - проги очень тесно связанные с текстом и обработкой текстов (одна), вторая - тесно связанная с теорией игр, матмоделями и графами

Вот с этого надо начинать.

ocid
()
Ответ на: комментарий от z0rk

Вроде как нет, на его основе создан Icon, на основе которого Unicon, но их синтаксис не насколько доставляет как у SNOBOL.

Begemoth ★★★★★
()

вот я любил Haskell, пока не начал знакомство со Spad. Последний конечно нечист и вообще мультипарадигменный. Синтаксис чуток (самую малость) менее удобен, чем у хаскелла.

Но у него огромное преимущество перед Хаскеллом --- скорость написания программ. Я только начал разбираться со спадом но уже на первой пробной задаче код на Spad у меня в четыре раза меньше, чем у Хаскелла. При том, что на спаде я пока пишу через жопу.

А на некоторых задачах код на Spad будет в _тысячи_ раз короче сраного хаскелла.

Ijon
()
Ответ на: комментарий от z0rk

А, тогда понятно, у меня более приземлённые задачи, поэтому использую самое популярное.
А обработка текста — это в каком смысле? Разные задачи есть же.

blinkenlichten
()
Ответ на: комментарий от Begemoth

Хотя в генте есть dev-lang/snobol - hil Budne's port of Macro SNOBOL4 in C, for modern machines, но он замаскирован.

Begemoth ★★★★★
()
Ответ на: комментарий от Ijon

А на некоторых задачах код на Spad будет в _тысячи_ раз короче сраного хаскелла.

А вот такие заявляения надо бы обосновывать, с примерами.

Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth

речь идет о готовых функциях, которые идут со спадом. Ты заебешься на хаскелле даже частично реализовать алгоритм Риша.

Ijon
()
Ответ на: комментарий от Ijon

А что это за spad такой, что даже энциклопедия языков программирования о нем не знает? Можно ссылку кинуть, чтоб почитать для общего развития?

delete83 ★★
()
Ответ на: комментарий от Begemoth

тебе будет смешно, когда кто-то решит вопрос за день, а ты вообще не сможешь никогда в жизни написать соответствующую реализацию на Хаскелле.

Ijon
()
Ответ на: комментарий от Ijon

Ну и радуйся, что нашёл хороший инструмент. Дай, кстати ссылку на него, а то есть подозрение в ряде областей задачи на С могут решаться за день на Spad ты вообще не сможешь никогда в жизни написать соответствующую реализацию.

Begemoth ★★★★★
()
Ответ на: комментарий от z0rk

>Разве немерле чистый?

Уж точно не грязнее окамла и скалы.

Чистый в твоем списке _только_ хаскель.

И то он условно чистый. Ибо совсем чистые использовать не реально.

Тк в совсем чистых не может быть никакого IO в принципе.

winduzyatnik
()
Ответ на: комментарий от z0rk

> Кстати, а снобол еще шавелится?

Нас троллят, все в машину!

tailgunner ★★★★★
()
Ответ на: комментарий от z0rk

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

Саморазвитие понятно. А вот «трудночитаемым синтаксисом» нет.

Ибо синтакис не важен чуть менее чем полностью. Главное то что за этим синтаксисом скрывается.

Писать - проги очень тесно связанные с текстом и обработкой текстов (одна), вторая - тесно связанная с теорией игр, матмоделями и графами

Ну и бери немерле.

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

В частности Nemerle.Peg отличный и при том очень быстрый парсер. Например C#4 прасит со скоростью 3-4 мегабайта в секунду.

winduzyatnik
()
Ответ на: комментарий от delete83

собственно, по нему есть аксиомовские туториалы (т.е. вперемежку с документацией аксиомы) и куча примеров на аксиомовской же вики.

более-менее сжатое изложение со сравнениями (которое я не читал) http://www.euclideanspace.com/maths/standards/program/spad/index.htm

Ijon
()
Ответ на: комментарий от Begemoth

Можно подробнее про Unicon. Почитал - разве он не ветвь от «основного» айкона?

z0rk
() автор топика
Ответ на: комментарий от ott

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

z0rk
() автор топика
Ответ на: комментарий от winduzyatnik

Тк в совсем чистых не может быть никакого IO в принципе.

Берём чистое подмножество Хаскеля (т.е., без unsafe-функций и FFI). IO есть. ЧЯДНТ?

Miguel ★★★★★
()
Ответ на: комментарий от Ijon

собственно, по нему есть аксиомовские туториалы (т.е. вперемежку с документацией аксиомы) и куча примеров на аксиомовской же вики.

Мда, сравнить язык программирования с математическим пакетом (пусть и со своим языком программирования).

Begemoth ★★★★★
()
Ответ на: комментарий от winduzyatnik

> а макросы добавляют очень много.

И насколько они удобны в использовании, сравнивая с коммон лисповскими?

ocid
()
Ответ на: комментарий от ocid

Правильно сделанный макрос не менее удобен чем языковые конструкции в обычных языках.

if, for, while да и почти все остальные конструкции сделаны макросами.

Еще можно вот тут примеры посмотреть http://nemerle.org/wiki/index.php?title=Category:Macro_packages

А вот пример целого ДСЛ https://code.google.com/p/nemerle/source/browse/nemerle/trunk/snippets/csharp...

В файле Parser.n описан парсер. PegGrammar макрос который генерирует парсер.

В файлах Parser_*.n обработчики которые строят АСТ.

winduzyatnik
()
Ответ на: комментарий от Miguel

Функции чистые но создают побочные эффекты. Интересно...

Монады в хаскеле понадобились для того что бы зафиксировать порядок вызова функций. Больше они ни для чего не нужны.

Хотя некоторые не сознательные личности пытаются с их помощью доказать что хаскель чистый. :-/

winduzyatnik
()
Ответ на: комментарий от winduzyatnik

Функции чистые но создают побочные эффекты.

Нет, не создают.

Монады в хаскеле понадобились для того что бы зафиксировать порядок вызова функций.

Нет, не для этого.

Miguel ★★★★★
()
Ответ на: комментарий от Miguel

>> Функции чистые но создают побочные эффекты.

Нет, не создают.

С этим согласен.

Монады в хаскеле понадобились для того что бы зафиксировать порядок вызова функций.

Нет, не для этого.

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

ovk48 ★★★
()
Ответ на: комментарий от zombiegrinder_6000

> А когда надпись выводится на экран это не побочный эффект?

А надпись выводится на экран не функцией :)

ovk48 ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.