LINUX.ORG.RU
ФорумTalks

lisp или haskel?


0

0

Скажите пожалуйста, какой язык лучше начать изучать для функционального программирования lisp или haskel?

anonymous

На этом форуме уже раз сто говорили, что Лисп это не функциональный язык. Если хочешь учить ФТ, лучше учить по книжке о ФП, на русском есть перевод книги "Функциональное программирование" Филда и Харрисона. Есть ещё какие-то лекции на основе Хаскеля.

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

CrazyPit ★★★
()

> Скажите пожалуйста, какой язык лучше начать изучать для функционального программирования lisp или haskel?

Мое ИМХО, лисп (схема) попроще будут + учебной литературы для них много. Haskell со своими типами и монадами довольно сильно мозги напрягает, в лиспе все гораздо проще. Плюс к тому же в лиспе есть макросы, он быстрее, для него больше библиотек и рабочего кода. В общем, начинай лучше с лиспа, но с хаскеллом тоже следовало бы ознакомится.

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

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

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

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

На Лиспе - нельзя писать чисто функционально. На Схеме - можно. Стандарт Лиспа не требует корректности реализации хвостовой рекурсии, следовательно, не гарантировано, что будет работать любой чисто функциональный алгоритм. На практике, конечно же, почти все реализации CL хвостовую рекурсию правильно понимают, но переносимым такой код не будет.

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

Но мне всё-таки кажется, что именно для функционального программирования лучше с хаскеля начать, ибо он pure, ну со схеме тоже можно, а вот с коммон-лиспа лучше не надо. Но лисп конечно нужно учить по любому, но не как чисто функц. язык, я вот тоже когда заинтересовался функ. программированием начал с "Мир лисп", ну тогда меня лисп не так сильно заинтересовал, а вот после Practical Common Lisp, так стал моим любимым языком.

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

> Но мне всё-таки кажется, что именно для функционального программирования лучше с хаскеля начать, ибо он pure

ИМХО, слишком сложно для императивщика поначалу. В хаскеле слишком много концепций, в схеме меньше, поэтому ее легче понимать.

Все таки хаскеловская типизация довольно зубодробильная, лучше не с нее начинать.

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

> На Лиспе - нельзя писать чисто функционально. На Схеме - можно. Стандарт Лиспа не требует корректности реализации хвостовой рекурсии, следовательно, не гарантировано, что будет работать любой чисто функциональный алгоритм. На практике, конечно же, почти все реализации CL хвостовую рекурсию правильно понимают, но переносимым такой код не будет.

Схема это тоже лисп, между прочим.

> но переносимым такой код не будет.

Для обучения так важна переносимость?

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

> Неубедительно.

В официальном факе по схеме сказано, что это диалект лиспа, а ему неубедительно. :)

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

> Обычно, когда говорят про Лисп, имеют в виду CL. А у него такой косяк таки есть.

Я все равно не понимаю, чем вам не понравилось то, что в стандарте нет ничего про хвостовую рекурсию? В схеме вообще стандарта нет, ну так что? Хватит бредить.

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

Для схемы есть R5RS. Все реализации ему соответствуют. А для CL я посмотрю, как ты чисто рекурсивный алгоритм погоняешь на разных реализациях - с половиной обломаешься (e.g., armedbear).

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

> Для схемы есть R5RS. Все реализации ему соответствуют. А для CL я посмотрю, как ты чисто рекурсивный алгоритм погоняешь на разных реализациях - с половиной обломаешься (e.g., armedbear).

Для обучения так принципиально гонять алгоритм на несколких реализациях?

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