LINUX.ORG.RU

Литература по ФП и годные языки

 ,


2

2

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

★★★★

Последнее исправление: CYB3R (всего исправлений: 1)
Ответ на: комментарий от april

с чисто теоретической точки зрения интересно, просто хаскелл моден)

aptyp ★★★★
() автор топика

Нет, альтернатив хаскеллу нет.

anonymous
()

причём хочется для практики чистый язык.

Нафига? Потом же придётся учить ещё один ЯП, который будет гибридным.

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

сикп очень понравился(но не дочитал), хочется статики.

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

Для себя я выбрал F# о чём ни разу не пожалел. F# гибриден, но с перегибом в сторону ФП. И при этом не живёт в изолированном мирке откровенных маргиналов (в текущем положении Хаскеля), а в живом мире .Net.

Если не нравится .Net, то есть Scala, Clojure, OCaml (хотя что тут творится - я хз).

П.С. к Clojure без знания либо лиспа, либо ФП лучше не подходить.

Norgat ★★★★★
()

чистый язык

На практике не нужно, но — Joy.

Есть ли альтернатива хаскеллу

Mercury, хотя там флп.

годные языки

Lisp (любой), APL (J, K)

buddhist ★★★★★
()

Начать стоит со статьи «Why Functional Programming Matters». Она небольшая, но очень интересная и на нее много кто ссылается.

Неплохо в качестве вводного материала подходит статья Кирпичёва в 3-ем номере журнала «ПФП» - Элементы функциональных языков.

Далее стоит прочитать книгу «Функциональное программирование» Филда и Харрисона. Она переведена на русский язык и примеры там даются на языке программирования Hope.

Стоит отметить книгу «The Implementation of Functional Programming Languages». В ней особое внимание уделяется языку Miranda. Как видно из названия, книга рассказывает про то, как сделать собсвенную реализацию функционального языка.

Ну и разумеется, прочесть Алекса Отта в первом номере ПФП.

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

На сайте о Joy есть статьи, покрывающие практически все аспекты как самого языка, так и конкатенативного ФП в целом.

На сайте Mercury тоже.

По лиспу — On Lisp, Sketchy Scheme, Scheme 9 from Empty Space (о внутренностях интерпретатора), Zen-Style Programming, Little-Seasoned-Reasoned Schemer, Logic Programming in Scheme (Нильса Холма), SICP и SICM, Lisp in Small Pieces, Programming in Scheme (Абельсона).

По APL — вся подшивочка журнала Vector (в последние года на сайте http://archive.vector.org.uk/ все статьи журнала можно читать), At Play With J, «Fractals, Visualization and J» и все книги из http://www.jsoftware.com/jwiki/Books

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

Если APL очень заинтересует (что маловероятно, учитывая его внеземную природу :) ), то можно почитать и «A Programming Language» Кеннета Айверсона.

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

Я ушёл от активных изысканий в нём. Но писать небольшие модельки или параллелить C# код я на нём буду и дальше. Вообще многое для меня решится в Visual Studio 11, но это уже оффтоп.

Суть в чём - юзая F#/Nemerle или Scala/Clojure ты не только прокачаешь ФП скил, но и освоишь либу-другую из .Net/Java, юзая Haskell ты освошь пару N-е количество либ на Haskell, но применять потом ты их не сможешь. К тому же не забывай по кол-во прикладных либ под .Net/Java, имея их в запасе решать задачи посложнее «Hello world» намного приятнее (ибо ни ФП, ни ООП, ни метапрограммирование не являются серебряными пулями).

Norgat ★★★★★
()

Есть ли альтернатива хаскеллу?

Зачем альтернативы, хаскелл --- лучший. Если хочешь другое, то имеет смысл учить именно другое, что-то прямо противоположное, лисп какой, racket, pure. Но сначала изучи хаскелл, тогда поймешь, нужно ли другое и почему.

vvff
()

По соотношению фп / юзабельность (наличие библиотек, документации) haskell выделяется. Почему бы нет.

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

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

ну, бумажную документацию я вообще не собираюсь покупать, как бы.

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

Почему для скалы очень много предложений по работе, но она слишком сложная. А вот кложура годный язык, но предложений по работе как кот наплакал (видел только у яндексов).

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

Почему для скалы очень много предложений по работе, но она слишком сложная.

Чего там сложного то? Если знаешь ФП и ООП, то из непонятного с ходу там только актёры.

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

Посмотрел по диагонали.

Единственное, что заслуживает внимания - плохая поддержка IDE и слабоватая документация (пример с «пугающей» сигнатурой) (то, что засовывают в Java\ScalaDoc недостаточно для нормальной документации, имхо).

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

Разве это не ключевое преимущество? Если у меня нет нормальной IDE, которая поддерживает тот или иной язык, то зачем такой язык нужен? И да, синтаксис скалы заставляет меня забиться в угол и долго плакать в отличии от кложуры.

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

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

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

IDE есть нормальные IDEA, Eclipse, но поддержка Scala там ещё не на максимальном уровне просто, работать можно.

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

Синтаксис это фигня, по большому счёту. Единственный вопрос - можно ли с ним нормально работать. Со скаловским - вполне множно, так что проблема надумана.

Norgat ★★★★★
()

Если ты музыкант, то тебе должна понравиться книга «The Haskell School of Expression», Hudak. Хороший и красивый учебник, который охватывает и очень непростые темы, например, бесконечные потоки, которые несомненно являются визитной картой ленивого хаскеля.

Еще для начинающих очень хороша «Programming in Haskell, 2005», Hutton. Кроме прочего, там излагается основа метода парсер-комбинаторов. Становится понятно, как они устроены, и с чем их едят.

Можно попробовать начать изучать и с «Real World Haskell». Хотя она тяжеловата на мой взгляд, но обязательна, если ты собираешься в дальнейшем программировать на хаскеле. Охватывает очень многое из того, чего нет в других учебниках. Например, интересно изложены монадические транформеры. Есть и глава по профилированию приложений, к которой я постоянно обращаюсь вновь и вновь. Но я не рекомендую начинать изучения хаскеля с этой книги.

Также мне нравится «Yet Another Haskell Tutorial», но, к сожалению, она не закончена (кстати, почему?). Мне очень нравится суховатый стиль, приближенный к математике. Это был мой первый учебник по хаскелю. Помню, что дня два ходил под впечатлением от лаконичного изложения монад.

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

Если у меня нет нормальной IDE, которая поддерживает тот или иной язык

Idea же.

синтаксис скалы заставляет меня забиться в угол и долго плакать

Ты наверно только на бейсике писал?

ovk48 ★★★
()

Да, еще. Хаскель и ему подобные языки образуют свой собственный мир, который не совсем правильно ассоциировать со всем ФП. Лучше бы у него было другое отличимое название. Само же ФП шире, но я думаю, что изучение хаскеля будет полезным, поскольку в других языках обычно много соблазнов скатиться к гибридному программированию. В хаскеле же – уйти в дебри типизации, из которых и не выбраться порою :)

И, может быть, я не совсем понял, но зачем изучать теоретические основы ФП без практики на конкретных языках? Собираешься изводить всех на ленте fprog как некоторые товарищи?

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

ну вот насчёт практики (задачек точнее) и хотел завести отдельную тему. традиционная проблема - какие хорошие задачники есть, Джень?

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

Лучше бы у него было другое отличимое название

Можно счистить ржавчину с термина «Аппликативное программирование» ;)

Macil ★★★★★
()

интересно почитать теоретические основы фп,

System F (с расширениями), CIC, MLTT. Теоретические основы Хаскеля/Окамла, Coq и Agda соответственно.

Хотя в дао хаскеля, теория - всего лишь бэкграунд. Практика намного важнее.

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

Хаскель и ему подобные языки образуют свой собственный мир, который не совсем правильно ассоциировать со всем ФП


декларативное программирование, нет?

Собираешься изводить всех на ленте fprog как некоторые товарищи?


тонко и точно)

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

Здесь я не помощник. Для меня практика - это рабочие проекты на языках программирования. Все-таки не математика. Или ты как математическую дисциплину рассматриваешь?

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

Не накидаете годных задачников?

Лично мой задачник - моя предметная область. Парсеры, валидаторы, конвертеры, работа с файлами/каталогами, работа с БД и прочие прелести мелкой автоматизации.

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

декларативное программирование, нет?

Тоже перегруженный термин. Например, пролог декларативен, но не является ЯФП. Далее, цикл loop в CL декларативен, но с такой примесью императивности.

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

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

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

Можно счистить ржавчину с термина «Аппликативное программирование» ;)

Ты имеешь в виду ссылочную прозрачность или что другое?

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

Ты имеешь в виду ссылочную прозрачность или что другое?

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

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

Многие действительные лисперы и хаскелисты избегают таких тредов. Но я бы стал изучать хаскель для собственного удовольствия. Тогда еще раз советую найти «Programming in Haskell», 2005, Hutton, если английский не проблема. Например, там к монадам очень изящно подводят без какой-либо лоботомии.

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

Так это и в лиспе есть. Я, конечно, его отношу к ФП, но все же к отличной от хаскеля группе. Хотя мне кажется, я понял, что ты имеешь в виду.

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

Так это и в лиспе есть.

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

Я, конечно, его отношу к ФП

А я лично, хаскель к ФП не отношу. К ФП я отношу питон, яву и прочие языки, где есть суррогаты функций высшего порядка. А если есть тип a -> b, то язык уже аппликативный.

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

А я лично, хаскель к ФП не отношу. К ФП я отношу питон, яву и прочие языки, где есть суррогаты функций высшего порядка.

Это ты так шутишь со мной? :)

dave ★★★★★
()

Не нужен вам этот хаскель. Он непрактичный и страшный.

А если хотите размять мозги чем нибудь функциональным, соберите и осознайте различия между определениями «функции» из разных областей математики (теории множеств, лямбда-исчисления, теории вычислимости и прочих)

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