Leave a comment

vshabanov September 11 2012, 23:03:38 UTC
Еще у макросов есть проблема, что "вы можете сделать на лиспе любой DSL, если только он является лиспом". Т.е. если на том же хаскеле можно вводить свои операторы, пользоваться OverloadedStrings/Num/fromIntegral/do-notation, в результате чего можно получить достаточно прикольно выглядящий DSL, то на лиспе будут скобочки и приплыли ( ... )

Reply

thesz September 12 2012, 08:50:41 UTC
Конструкторы значений могут быть закодированы по Чёрчу с помощью функций. То есть, это такие специально обрабатываемые ФВП. Поэтому и "ФВП с маскировочной сеткой".

У Лиспа есть ещё более совершенно оружие, называется reader macros или как-то так. С ним можно получить полноценный синтаксис.

Но практически никто им не пользуется. ;)

Reply

vshabanov September 12 2012, 09:35:07 UTC
> Но практически никто им не пользуется. ;)

Конечно, потому что там надо синтаксический разбор самому писать (что несколько сложнее, чем написать infixr/infixl для оператора). В этом то и фишка фразы, что "на лиспе вы можете сделать DSL с любым синтаксисом, если этот синтаксис -- лисп"

Reply

dmytrish September 12 2012, 13:15:55 UTC
Еще у макросов есть проблема, что "вы можете сделать на лиспе любой DSL, если только он является лиспом"
- не совсем: https://gist.github.com/3706515
Но да, это дикое извращение и фактически свой собственный парсер.

Reply

thesz September 12 2012, 14:03:19 UTC
Это как подростковый секс - чаще говорят, чем делают.

Reply

nivanych September 13 2012, 07:20:50 UTC
И на форте инфиксные операторы - сам делал!

Reply


Leave a comment

Up