На этом форуме уже раз сто говорили, что Лисп это не функциональный язык. Если хочешь учить ФТ, лучше учить по книжке о ФП, на русском есть перевод книги "Функциональное программирование" Филда и Харрисона. Есть ещё какие-то лекции на основе Хаскеля.
Но вообще выучи оба языка, очень советую, хотя хаскелл пока сам только по тем лекциям изучил, но очень уж интересный язык.
> Скажите пожалуйста, какой язык лучше начать изучать для функционального программирования lisp или haskel?
Мое ИМХО, лисп (схема) попроще будут + учебной литературы для них много. Haskell со своими типами и монадами довольно сильно мозги напрягает, в лиспе все гораздо проще. Плюс к тому же в лиспе есть макросы, он быстрее, для него больше библиотек и рабочего кода. В общем, начинай лучше с лиспа, но с хаскеллом тоже следовало бы ознакомится.
На Лиспе - нельзя писать чисто функционально. На Схеме - можно. Стандарт Лиспа не требует корректности реализации хвостовой рекурсии, следовательно, не гарантировано, что будет работать любой чисто функциональный алгоритм. На практике, конечно же, почти все реализации CL хвостовую рекурсию правильно понимают, но переносимым такой код не будет.
Но мне всё-таки кажется, что именно для функционального программирования лучше с хаскеля начать, ибо он pure, ну со схеме тоже можно, а вот с коммон-лиспа лучше не надо. Но лисп конечно нужно учить по любому, но не как чисто функц. язык, я вот тоже когда заинтересовался функ. программированием начал с "Мир лисп", ну тогда меня лисп не так сильно заинтересовал, а вот после Practical Common Lisp, так стал моим любимым языком.
> На Лиспе - нельзя писать чисто функционально. На Схеме - можно. Стандарт Лиспа не требует корректности реализации хвостовой рекурсии, следовательно, не гарантировано, что будет работать любой чисто функциональный алгоритм. На практике, конечно же, почти все реализации CL хвостовую рекурсию правильно понимают, но переносимым такой код не будет.
> Обычно, когда говорят про Лисп, имеют в виду CL. А у него такой косяк таки есть.
Я все равно не понимаю, чем вам не понравилось то, что в стандарте нет ничего про хвостовую рекурсию? В схеме вообще стандарта нет, ну так что? Хватит бредить.
Для схемы есть R5RS. Все реализации ему соответствуют. А для CL я посмотрю, как ты чисто рекурсивный алгоритм погоняешь на разных реализациях - с половиной обломаешься (e.g., armedbear).
> Для схемы есть R5RS. Все реализации ему соответствуют. А для CL я посмотрю, как ты чисто рекурсивный алгоритм погоняешь на разных реализациях - с половиной обломаешься (e.g., armedbear).
Для обучения так принципиально гонять алгоритм на несколких реализациях?