Еще у макросов есть проблема, что "вы можете сделать на лиспе любой DSL, если только он является лиспом". Т.е. если на том же хаскеле можно вводить свои операторы, пользоваться OverloadedStrings/Num/fromIntegral/do-notation, в результате чего можно получить достаточно прикольно выглядящий DSL, то на лиспе будут скобочки и приплыли
( ... )
Конструкторы значений могут быть закодированы по Чёрчу с помощью функций. То есть, это такие специально обрабатываемые ФВП. Поэтому и "ФВП с маскировочной сеткой".
У Лиспа есть ещё более совершенно оружие, называется reader macros или как-то так. С ним можно получить полноценный синтаксис.
Конечно, потому что там надо синтаксический разбор самому писать (что несколько сложнее, чем написать infixr/infixl для оператора). В этом то и фишка фразы, что "на лиспе вы можете сделать DSL с любым синтаксисом, если этот синтаксис -- лисп"
Еще у макросов есть проблема, что "вы можете сделать на лиспе любой DSL, если только он является лиспом" - не совсем: https://gist.github.com/3706515 Но да, это дикое извращение и фактически свой собственный парсер.
Reply
У Лиспа есть ещё более совершенно оружие, называется reader macros или как-то так. С ним можно получить полноценный синтаксис.
Но практически никто им не пользуется. ;)
Reply
Конечно, потому что там надо синтаксический разбор самому писать (что несколько сложнее, чем написать infixr/infixl для оператора). В этом то и фишка фразы, что "на лиспе вы можете сделать DSL с любым синтаксисом, если этот синтаксис -- лисп"
Reply
- не совсем: https://gist.github.com/3706515
Но да, это дикое извращение и фактически свой собственный парсер.
Reply
Reply
Reply
Leave a comment