Важно отметить, что LINQ — это четыре вещи:
- Монадическое понимание
- Интеграция с базой данных
- SQL-подобный синтаксис
- Манипуляции с АСТ
Люди, которые только что слышали об этом, могут думать об этом просто как об интеграции с базой данных. Люди, которые немного работали с ним, вероятно, думают о синтаксисе, подобном SQL. Те, кто действительно копается, будут знать о монадическом аспекте понимания, даже если они не знают, что это такое.
Если взять, например, Scala, у него будет монадическое понимание без остальных трех. Существует библиотека под названием ScalaQuery, которая обеспечивает интеграцию с базой данных посредством монадического понимания (внутренняя возможность сделать это это главная причина, по которой монады круты). Другой проект под названием ScalaQL, я думаю, намерен предоставить почти то же самое, но с использованием плагина компилятора для улучшения. Я не знал о работе Мигеля Гарсии, которую вы упомянули, но, увидев другие работы, которые он сделал, я в восторге от нее.
Однако для монадического понимания не требуется специальный синтаксис. Это просто делает его незагроможденным шаблоном. Так что этот аспект мгновенно доступен для языков с нужным уровнем поддержки дженериков.
Две вещи, которые Scala не делает. Во-первых, это SQL-подобный синтаксис. Ничего не поделаешь: синтаксис SQL выглядит неуместным в Scala. Я думаю, можно с уверенностью сказать, что большинство программистов на Scala предпочли бы остаться с тем, что им знакомо — так называемым пониманием.
Еще одна вещь, которую я еще не обсуждал, манипуляции с AST. Это возможность манипулировать кодом, который был проанализирован компилятором, но еще не преобразован в байтовый код, предоставляя возможность изменить его до завершения генерации.
Я думаю, что такая вещь была бы благом для Scala — черт возьми, для любого языка. Но, опять же, у меня есть опыт работы программистом на Форте, где возможность изменять код во время его компиляции была Богом данным правом. .Net может сделать это через LINQ, как и некоторые другие языки, такие как Ruby.
person
Daniel C. Sobral
schedule
06.01.2010
Iterable
, как ставку, которую он может сделать для достижения номера 1. Вы можете получить его на центральном Maven здесь: search.maven.org/ - person Groostav   schedule 19.04.2015