Мне было интересно, какие уникальные возможности я могу извлечь из Scheme, чтобы помочь мне стать лучшим программистом?
У меня большой опыт в основных языках, и я хочу расширить свой кругозор и узнать о функциональных аспектах, которые отсутствуют в других языках. Я знаком с замыканиями из javascript, лямбда-выражениями из C #, и мне было интересно, на чем я могу сосредоточиться, чего не хватает в других языках? Помимо синтаксиса Lisp, я чувствую, что то, что я видел до сих пор, я уже встречал на других языках.
Что уникального в Scheme / Lisp, что научит меня чему-то новому?
functional-programming
lisp
scheme
bunglestink
источник
источник
Ответы:
Возможно, наиболее важной определяющей характеристикой Lisp является «Код как данные». Вы не получите такой же опыт, как с любым другим языком. В C # ближайший аналог - деревья выражений.
Именно это качество делает Лисп отличным языком для анализа. Именно это качество побудило Пола Грэма сказать о Лиспе: «Необычная вещь в Лиспе - фактически, определяющее качество Лиспа - это то, что он может быть написан сам по себе». Хотя самонастраивающиеся компиляторы не являются чем-то новым, ни один язык не делает это так элегантно, как Лисп.
Метапрограммирование (то, в чем также превосходит Lisp) также стоит изучить.
Превышение средних значений Полом Грэмом
http://www.paulgraham.com/avg.html
источник
Да, это поможет вам мыслить рекурсивно. Я изучал его (схему) в течение месяца или около того в классе языка программирования, и это помогло мне развить то, как я думаю и решаю проблемы программирования.
Всегда полезно попробовать другие парадигмы программирования; Затем вы возвращаетесь обновленными в мир ОО с новыми идеями.
Не синтаксис, а рассуждение, это отличное упражнение для мозга. Appart от рекурсии и интересного использования списков, есть не так много IMHO, но это того стоит.
источник
Продолжение :
а затем попробуйте реализовать неоднозначный оператор Маккарти :
источник
Я могу думать о следующем:
Я также считаю, что языки lisp должны быть полезны для определения языков, специфичных для предметной области (DSL). Об этом вы, возможно, захотите прочитать, если еще не знаете об этом.
источник