лень как пользовательский язык; на самом деле вы делаете это сами в своем комментарии к ответу sclv. Проблема, которую вы описываете, имеет мало общего с макросами или ленью, а еще меньше - со сравнением двух. Это проблема высокого уровня абстракции, а именно, что разумная абстракция для одного программиста может быть непостижима для другого. Это стоит обсудить, но, как говорит 6502, возможно, не на SO.

вык к ленивой оценке из Haskell, и теперь меня раздражают языки с нетерпением по умолчанию теперь, когда я правильно использовал ленивую оценку. Это на самом деле довольно вредно, так как другие языки, которые я использую, в основном делают ленивые вычисления очень неловкими, как правило, включающие в себя переход от cus, к итераторам и так далее. Так что, просто приобретя некоторые знания, я на самом деле сделал себяМеньше продуктивен в моих оригинальных языках. Вздох.

Но я слышал, что макросы AST предлагают другой чистый способ сделать то же самое. Я часто слышал такие высказывания, как «Ленивая оценка делает макросы избыточными» и наоборот, в основном из спарринг-сообществ Lisp и Haskell.

Я баловался с макросами в разных вариантах Lisp. Они просто казались по-настоящему организованным способом копирования и вставки кусков кода во время компиляции. Они, конечно, не были святым Граалем, о котором Лисперсу нравится думать. Но это почти наверняка, потому что я не могу использовать их должным образом. Конечно, наличие макросистемы, работающей с той же базовой структурой данных, с которой собран сам язык, действительно полезно, но это все же в основном организованный способ копирования и вставки кода. Я признаю, что основание системы макросов на том же AST, что и язык, который допускает полное изменение времени выполнения, является мощным.

Я хочу знать, как можно использовать макросы, чтобы лаконично и лаконично делать то, что делает ленивая оценка? Если я хочу обрабатывать файл построчно, не теряя при этом весь процесс, я просто возвращаю список, в котором была отображена подпрограмма чтения строки. Это идеальный пример DWIM (делай, что я имею в виду). Мне даже не нужно думать об этом.

Я явно не получаю макросы. Я использовал их и не был особенно впечатлен, учитывая шумиху. Так что я что-то упускаю из-за того, что не читаю документацию онлайн. Может кто-нибудь объяснить мне все это?

Ответы на вопрос(5)

Ваш ответ на вопрос