LINUX.ORG.RU

Lisp vs ML vs Haskell


0

1

хотелось бы услышать сравнение семейств этих языков

интересуют, в основном, идеи, на которых эти языки основаны, сферы применения, удобство написания программ

anonymous

Лисп - метаязык. Он не основывается ни на какой конкретной парадигме, и в нём легко можно реализовать любую возможную парадигму. Преимущества этого подхода - можно сделать ВСЁ. Лисп - самодостаточная платформа, включающая в себя всё, что только было и что когла либо будет. Недостатки - в силу чрезмерной гибкости базового языка, статический анализ кода сильно затруднён. Легко можно ошибиться (ну, те кто на C пишут, хорошо знают, какой бардак можно развести на одном только препроцессоре - а у Лиспа макросистема на порядки мощнее и гибче).

ML - функциональный язык с императивными возможностями. Годится для ограниченного (хоть и очень широкого) круга задач. Основная его фича - типизация по Хиндли-Миллнеру, что делает его очень сильно устойчивым к наиболее часто встречающемуся классу ошибок (см. выше про проблемы статического анализа в Лиспе). Наличие императивных возможностей, однако, всё равно сильно ограничивает возможности статического анализа.

Haskell - абсолютно чистый функциональный язык (то есть - язык ровно ОДНОЙ парадигмы) с ленивой вычислительной семантикой. Идеален для статического анализа, и достаточно компактный и выразительный для достижения (пусть и ценой производительности, в отличии от Лиспа) любого уровня абстракции. Идеален там, где нужна максимальная надёжность.

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

А еще, Haskell - самый красивый из вышеперечисленного, чисто эстетически
=)

Может кому-то и все равно, но мне доставляет больше удовольствия
пользоваться красивыми инструментами...

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

> Может кому-то и все равно, но мне доставляет больше удовольствия пользоваться красивыми инструментами...

Так сам же знаешь - на вкус и цвет... ;)

А вдруг кому-то жабий код нравится? (я не о себе - чур меня :)

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

Ну, чисто эстетически - Лисп можно заставить выглядеть, как Хаскелль (что я и сделал, когда потребовалось писать много хитрых и навороченных recursive descendant парсеров)...

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

> Ну, чисто эстетически - Лисп можно заставить выглядеть, как Хаскелль
> (что я и сделал, когда потребовалось писать много хитрых и
> навороченных recursive descendant парсеров)...

Можно. Но для этого придется возиться с лисповыми макрами. А они, хоть и
мощны, но выглядят... некрасиво =/

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

> Ну, чисто эстетически - Лисп можно заставить выглядеть, как Хаскелль (что я и сделал, когда потребовалось писать много хитрых и навороченных recursive descendant парсеров)

На это можно где-нибудь посмотреть? :)

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

Старая и незаконченная версия - в cvs проекта dslengine.sf.net (Testing/CL/comb.lsp), полную выложу после публикации статьи, пока идеи светить не хочу.

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