По уровню я бы сравнил его с функциональным Си - обычному программисту всё понятно и просто, можно использовать функциональные идиомы, если не требовать многого.
Хороший высокоуровневый язык. Если не хотите сильно ломать себе шаблон, то вполне.
Хаскель более развит - cabal, поддержка многопоточности (и скоро - распределённых вычислений), великолепная библиотека времени выполнения (размер зелёной нити меньше, чем у Эрланга в полтора раза).
OCaml сейчас пользуется поддержкой некоторых банков и тоже стал подбираться к уровню Хаскеля, но всё ещё не дотягивает.
Форт полезен, как пример минималистической системы, в этом я ему не могу отказать. Расширяет сознание, действительно. Просто для повседневного программирования он не очень полезен.
Еще у макросов есть проблема, что "вы можете сделать на лиспе любой DSL, если только он является лиспом". Т.е. если на том же хаскеле можно вводить свои операторы, пользоваться OverloadedStrings/Num/fromIntegral/do-notation, в результате чего можно получить достаточно прикольно выглядящий DSL, то на лиспе будут скобочки и приплыли
( ... )
Конструкторы значений могут быть закодированы по Чёрчу с помощью функций. То есть, это такие специально обрабатываемые ФВП. Поэтому и "ФВП с маскировочной сеткой".
У Лиспа есть ещё более совершенно оружие, называется reader macros или как-то так. С ним можно получить полноценный синтаксис.
Конечно, потому что там надо синтаксический разбор самому писать (что несколько сложнее, чем написать infixr/infixl для оператора). В этом то и фишка фразы, что "на лиспе вы можете сделать DSL с любым синтаксисом, если этот синтаксис -- лисп"
Еще у макросов есть проблема, что "вы можете сделать на лиспе любой DSL, если только он является лиспом" - не совсем: https://gist.github.com/3706515 Но да, это дикое извращение и фактически свой собственный парсер.
Максимовский код был портирован с маклиспа на коммон лисп и несет много рудиментов. Я бы, хоть и запоздало, порекомендовал зайти сюда: http://www.cliki.net/index, и выбрать в разделе Free Software Lisp Libraries понравившуюся тематику и посмотреть как там обстоят дела. Может parenscript - кодогенерация в яваскрипт.
Но я не думаю, что это изменит моё мнение. Вот попробуйте ответить на те же вопросы: переносимы ли приёмы из макро-определений parenscript на другие языки? Не являются ли макро-определения в parenscript обходом недостаточной выразительности Лиспа, как такового?
Comments 39
Reply
По уровню я бы сравнил его с функциональным Си - обычному программисту всё понятно и просто, можно использовать функциональные идиомы, если не требовать многого.
Хороший высокоуровневый язык. Если не хотите сильно ломать себе шаблон, то вполне.
Как-то так.
Reply
а если в сравнении с Хаскелем? в особенности интересует развитость платформ для разного продакшена.
Reply
OCaml сейчас пользуется поддержкой некоторых банков и тоже стал подбираться к уровню Хаскеля, но всё ещё не дотягивает.
Reply
(The comment has been removed)
Вот тут пример, почему полезно: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.39.8219
Форт полезен, как пример минималистической системы, в этом я ему не могу отказать. Расширяет сознание, действительно. Просто для повседневного программирования он не очень полезен.
Reply
Reply
Reply
Reply
Reply
Reply
У Лиспа есть ещё более совершенно оружие, называется reader macros или как-то так. С ним можно получить полноценный синтаксис.
Но практически никто им не пользуется. ;)
Reply
Конечно, потому что там надо синтаксический разбор самому писать (что несколько сложнее, чем написать infixr/infixl для оператора). В этом то и фишка фразы, что "на лиспе вы можете сделать DSL с любым синтаксисом, если этот синтаксис -- лисп"
Reply
- не совсем: https://gist.github.com/3706515
Но да, это дикое извращение и фактически свой собственный парсер.
Reply
Reply
Но я не думаю, что это изменит моё мнение. Вот попробуйте ответить на те же вопросы: переносимы ли приёмы из макро-определений parenscript на другие языки? Не являются ли макро-определения в parenscript обходом недостаточной выразительности Лиспа, как такового?
Reply
Reply
В противном случае у вас были бы ответы.
Reply
Leave a comment