Re[40]: Кстати
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.11.09 23:02
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>В защиту хаскеля: классы типов гораздо круче интерфейсов.


Они не круче. У каждого свои преимущества и недостатки.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[40]: Кстати
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.11.09 23:03
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Я её сравнивал с Select. Его же тоже можно к любому типу прикрутить.


Если рассуждать так, то конечно. Только прикручивать будешь ты сам.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[37]: Кстати
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 25.11.09 23:11
Оценка:
Здравствуйте, VladD2, Вы писали:

L>>Ты не сможешь залезть в потроха Foo иначе чем через fromFoo, создать Foo сможешь тоже только с помощью функции mkFoo. Иначе говоря, паттерн-матчингом разобрать не сможешь.

VD>А как же gmap?

Ты про использование? Там тоже должен использовать fromFoo

gmap fromFoo


вместо

gmap (Foo i -> i) -- ошибка!
Re[32]: Кстати
От: IT Россия linq2db.com
Дата: 25.11.09 23:23
Оценка: :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>>>В данном случае ключевой признак — отсутствие связей внутри отношения. Остальное — см. теорию РСУБД.

IT>>Дай ссылочку на твою теорию, я посмотрю. А то мне не понятно как внутри отношения (слова, которое означает 'связь, зависимость') могут отсутствовать связи.

ГВ>О! Я специально запасся ссылкой на Главный Источник Мудрости.


Да, только там речь идёт о базах данных. Меня смущает прежде всего использование этого термина применительно к объектным моделям.

ГВ>Формулировка удивительная, но правильная по сути. Нормальные формы — как раз последовательное исключение функциональных связей.


А... ну если ты про отсутсвие таких связей, а не вообще, то тогда понятно. В принципе, между таблицами нет и половых связей, так что тоже можно говорить об отсутствии связей
Если нам не помогут, то мы тоже никого не пощадим.
Re[37]: Кстати
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 25.11.09 23:25
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Таких штук в Хаскеле, насколько я понимаю, нет. :)


К сожалению, есть — IORef/STRef/MVar и прочие ссылки и указатели. Достаточно представить себе ADT, оборачивающий один из этих типов, чтобы увидеть проблему.
Re[38]: Кстати
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.11.09 23:25
Оценка: :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Что тебе не понятно? Что было бы куда прикольней, если бы MS сделала прямое отображение IL на SQL-Server?


Мне понятно, что это чушь. ЛИНК потому и отображается во что угодно, что его модель ограничена декларативными конструкциями.

VD>>Не было там никаких адаптаций. Несколько функций переименовали просто чтобы людям не так страшно было новый мир осваивать. Map переименовали в Select, Filter в Where, Fold в Aggregate, Sort в OrderBy. По сути же как были функции, так и остались.

VD>>Или ты думаешь, что Хаскель тоже проектировали под соусом адаптации к SQL?

ГВ>Нет, разумеется.


А почему нет? Goto тоже нет!
Это же твоя логика?

ГВ>Да... 36-й уровень вложеннности в дискуссии — самое удачное место для обработки масс, кто бы спорил.


И это не может не радовать.

ГВ>Встречная просьба того же порядка.


Я не обосновал хотя бы одно свое суждение?

VD>>Пойми, я тоже с трудом признаю не правоту. Порой на это уходит недели или даже месяцы. Но если не признавать свою не правоту, то рано или поздно становишься догматиком и твои суждения уже никому не будут интересны.


ГВ>Угу. Как всегда, когда доказать не удаётся, остаётся уговорить.


Ну, дык. Как можно доказать что-то человеку который просто фильтрует все аргументы и гнет одно и то же не смотря на то, что очевидно, что его утверждения противоречат фактам?

ГВ>Проблема в том, что сейчас мы обсуждаем как раз причины.


Да, ну? А, понял. Это ты себя на Вы. Да?

VD>>К тому же ты уже достал повторять чушь. Тебе сказали, что в Хаскеле может и думали только о СУБД. Но когда разрабатывали ЛИНК, то думали только и исключительно об универсальном решении. Просто средство доступа к данным никто в язык общего назначения не включил бы.


ГВ>Об универсальном решении чего?


Доступа к данным.

ГВ>>> И очень хорошо знаю, что до LINQ собственных более или менее адекватных средств разрешения этой проблемы у MS не было. Почему я должен скидывать эти два соображения со счетов — сие мне неведомо.

VD>>Потому что они не имеют отношения к делу.

ГВ>Не-не-не. Это ты настаиваешь на том, что я должен от них абстрагироваться. Почему я должен абстрагироваться от весьма весомых причин в контексте обсуждения причин — ещё одна тайна.


Продемонстрируй связь.

ГВ>>>Ещё я очень хорошо знаю, что под "источником данных" чаще всего подразумевается РСУБД, такова общая практика. Ещё я могу припомнить кое-что из своей практики, после всего этого, поверь, можно сделать очень много выводов.

VD>>Опять же. Никому нет никокого дела до того что и под чем понимают люди и с какой частотой.
VD>>LINQ to Object используют чаще чем LINQ to SQL. Но из этого не следует, что LINQ создан толко для обработки данных в памяти.

ГВ>А кто-то это утверждает?


Что? Что LINQ to Object чаще используется? Или вывод? Вывод построен по твоим лекалам. Первое — это факт подтвержденный несколькими людьми прямо в этой теме.

VD>>Ну, как же? Ты все время меня пытаешься заставить подумать о разной фигне не относящейся к делу.


ГВ>Странно. Обсуждаем, вроде бы, назначение. А факторы, которые в немалой степени определяют это самое назначение, почему-то нужно выбросить из рассмотрения.


Ага. Назначение, а не причины создания. Улавливаешь разницу?

ГВ>>>Просто скажи, что тебе не интересно это обсуждать и выйди из обсуждения.

VD>>Ага. Не интересно. Я лучше тебя знаю был задуман и реализован линк.

ГВ>Дык. Жду прямых доказательств ошибочности моих суждений.


Я тебе доказал, что твои суждения о назначении линка неверны.
Доказывать что-то по поводу причин его создания не имею желания и не вижу смысла. К тому же свечку я не держал и мои слова будут не более чем догадками.

ГВ>>> Только какой смысл при этом встревать с опровержениями высказываний других?

VD>>Потому что "другие" пытаются путем подмены обсуждаемых понятий обосновать ложные умозаключения.

ГВ>Ага. Иными словами — неймётся. Так и запишем.


Запиши. И читай перед сном. Может полегчает.

VD>>Я считаю LINQ универсальным средством и мне по фиг ради чего он введен.

VD>>Это факт и его глупо оспаривать.

ГВ>Ну пофиг, так пофиг. Я ж не требую от тебя изменить своё мировоззрение.


Это не мировоззрение. Это факт. Он не у меня. Он просто есть.


VD>>Тебя ничего не сможет переубедить. Ты имеешь мнение и оспорить его невозомжно, так как при его обосновании ты просто плюешь на логические рассуждения и подменяешь понятия.


ГВ>Ну, чуть выше ты утверждал, что лучше меня знаешь, как и почему был задуман LINQ.


Ага.

ГВ>Так я жду рассказа. Желательно, с указанием причин событий, а не: "...и тут он решил, что было бы здорово...". Сначала расскажи о том, почему "он" получил право решать что-то.


А я рассказывал. Ты как обычно профильтровал.
К тому же это не имеет отношения к делу.

ГВ>>> Но вот кое-чего в Linq.Expressions нет. Например, нет меток/goto. По странному стечению обстоятельств goto отсутствует и в выражениях SQL-запросов.

VD>>В Хаскле и Nemerle тоже нет GOTO. Видимо тут тоже странное стечение обстоятельств.
VD>>Их тоже писали под влиянием SQL?

ГВ>Нет. Одно с другим не связано. Я просто отметил странное совпадение. А ещё goto — имманентная составляющая циклов.


А зачем ты его отметил именно в связке Linq и SQL? Ведь связи и правда нет. Ну, по крайней мере ты не смог ее доказать.
А раз не смог, то и отмечать глупо, потому как иначе монжно отмечать что угодно и с умным видом многозначительно поднимать указательный палец в небо.

VD>>Ты хоть понимаешь каких чудесных выводов можно добиться таким образом?

VD>>Кстати, в Яве тоже нет GOTO!

ГВ>Зато в Яве есть for/while. Вот незадача.


А в Nemerle и Haskell нет. И какие далеко идущие выводы из этого мы сделаем?

ГВ>>>Кстати, этот факт служит дополнительным аргументом (помимо других) для введения ФП-свойств в любой язык программирования, который предполагается использовать в тесной связи с SQL-серверами.

VD>>Гениально!
VD>>А чему служит факт, что современный SQL поддерживает рекурсивные запросы (на базе CTE), а ЛИНК нет?

ГВ>Вероятно, подтверждению моего высказывания о том, что возможности SQL Server всё ещё шире LINQ. Было тут где-то оно...


Так к чему все твои замечания то? Они ничего не доказывают и ни на что не влияют. Ты это понимаешь?

ГВ>Без паники. Зато я остался. Приключения продолжаются.


Не. Приключения заканчиваются. Я с удовольствием поспорю с оппонентом у которого есть аргументы, который понимает что он доказывает и который четко выдерживает правила логики. Но у тебя я не вижу ничего из перечисленного. Посему это уже не просто не интересно, это бессмысленно.

ГВ>>>Ну да-да. "Слоны всем, в ямы никого, Джунгахора!" Ладно, если не вышучивать, то всё это — вполне естественные следствия ФП. Хотя на мой взгляд, подо всё это хозяйство логичнее было бы завести подходящие атрибуты в C#.

VD>>Что за атрибуты? Выражайтесь яснее (с)

ГВ>Я тебе должен рассказать, что такое атрибуты в C#? Хм. VladD2 расспрашивает ГВ про C#? Ради этого момента стоило поспорить!


Просто между атрибутами C# и обсуждаемой темой на мой взгляд нет никаких связей. Я думал ты знаешь что-то, что я не знаю. Оказывается это очередное многозначительное высказывание не о чем. ОК.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: LINQ только для РСУБД!
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.11.09 23:26
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Тем не менее, спасибо за ответы на мои.


Не за что. Но так как на мои вопросы ответов нет, то будем ждать когда они появятся. А до тех пор говорить не о чем.

VD>>Неужели тебе приятнее выглядеть человеком не владеющим азами логического мышления нежели человеком который ошибался, но понял свои ошибки?


ГВ>В чьих глазах?


Окружающих. Не думаешь же ты, что все такие идиоты, что не видят очевидных брешей в твоих рассуждениях?

ГВ>Логически здесь как раз следует, что в ряде случаев LINQ — не пришей кобыле хвост.


Ты бы спросил, тебе бы сразу ответили, что LINQ это не панацея.
Я сразу сказал, что линк зачастую позволяет получить намного более компактынй и понятный код. Во многих != во всех.
Примеры тебе приводили.

ГВ> Одна лишь демонстрация крутизны на ровном месте.


Да нет там никакой крутизны. Это инструмент которым нужно уметь пользоваться. Надо быть полным кретином чтобы при наличии линк накручивать многокилометровые циклы и выписывать отдельные методы в тех случаях когда линк позволяет обойтись парой строчек. И надо быть таким же кретином чтобы совать его во все дыры.

Вопрос только в том причем тут РСБУД?

ГВ> Да и честно сказать, даже реализация на Nemerle круто проигрывает банальному циклу в читабельности.


От части — это с непривычки. Я так оба варианта отлично читаю.
Отчасти это потому, что задача действительно на циклах решается без особых потерь.
А отчасти потому, что оторвано от реальности.
В реальности такие выпендрежи бывают крайне редко. А вот просто отфильтровать, отсортировать, сгрупировать, отобрать X элементов пропустив Y элементов — это нужно постоянно.

ГВ>Зато, что любопытно, реализация на Go
Автор: Gaperton
Дата: 22.11.09
по ясности изложения резко обходит всех.


Гы. Красота еще та. Туча бесполезных строк. Спроси у своего друга, на достуге, что будет если в потоке не будет данных. Он ведь так смело из него первый элемент читает.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[38]: Кстати
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.11.09 23:27
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Ты про использование? Там тоже должен использовать fromFoo


L>
L>gmap fromFoo
L>


Что такое fromFoo?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[41]: LINQ только для РСУБД!
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.11.09 23:29
Оценка: :))
Здравствуйте, Gaperton, Вы писали:

G>Ты внимательно почитай, что тебе lomeo пишет. И задумайся как следует, почему именно он не возражает мне, а пытается что-то втолковать тебе. Разъясняя тебе, что именно я имел в виду.


Это надо у него спросить. Я вот тебе тоже уже не возражаю.
И ГВ тоже возражать надоело.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: LINQ только для РСУБД!
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.09 00:27
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>def (_, _, res) = lst.Aggregate((0, true, List()), ((prev, skip, res), cur) =>

VD> if (skip) (cur, false, res)
VD> else if (prev + 1 == cur) (cur, true, { res.Add(cur); res })
VD> else (cur, false, res));

Туплю. Можно еще проще:


def (_, _, res) = lst.Aggregate( (  0,  true, List()), ((prev, skip, res), cur) =>
   if (!skip && prev + 1 == cur) (cur,  true, { res.Add(cur); res })
   else                          (cur, false, res));
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: LINQ только для РСУБД!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 26.11.09 00:48
Оценка: +3 -1
Здравствуйте, VladD2, Вы писали:

VD>>def (_, _, res) = lst.Aggregate((0, true, List()), ((prev, skip, res), cur) =>

VD>> if (skip) (cur, false, res)
VD>> else if (prev + 1 == cur) (cur, true, { res.Add(cur); res })
VD>> else (cur, false, res));

VD>Туплю. Можно еще проще:



VD>
VD>def (_, _, res) = lst.Aggregate( (  0,  true, List()), ((prev, skip, res), cur) =>
VD>   if (!skip && prev + 1 == cur) (cur,  true, { res.Add(cur); res })
VD>   else                          (cur, false, res));
VD>


Вот уж точно — иная простота хуже...
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[18]: LINQ только для РСУБД!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 26.11.09 01:15
Оценка: :)
Здравствуйте, VladD2, Вы писали:

ГВ>>Тем не менее, спасибо за ответы на мои.

VD>Не за что. Но так как на мои вопросы ответов нет, то будем ждать когда они появятся. А до тех пор говорить не о чем.

На какие именно вопросы ответов нет? По-моему, я ответил на все, кроме одного, поставленного некорректно.

VD>>>Неужели тебе приятнее выглядеть человеком не владеющим азами логического мышления нежели человеком который ошибался, но понял свои ошибки?

ГВ>>В чьих глазах?
VD>Окружающих. Не думаешь же ты, что все такие идиоты, что не видят очевидных брешей в твоих рассуждениях?

"Отучаемся говорить за всех".

ГВ>>Логически здесь как раз следует, что в ряде случаев LINQ — не пришей кобыле хвост.

VD>Ты бы спросил, тебе бы сразу ответили, что LINQ это не панацея.
VD>Я сразу сказал, что линк зачастую позволяет получить намного более компактынй и понятный код. Во многих != во всех.
VD>Примеры тебе приводили.

О! Так вот как раз о тех случаях, которые выходят за пределы множества "во многих" я тут и толкую.

ГВ>> Одна лишь демонстрация крутизны на ровном месте.

VD>Да нет там никакой крутизны. Это инструмент которым нужно уметь пользоваться. Надо быть полным кретином чтобы при наличии линк накручивать многокилометровые циклы и выписывать отдельные методы в тех случаях когда линк позволяет обойтись парой строчек. И надо быть таким же кретином чтобы совать его во все дыры.

Какая блистательная мысль! Запомни её, а лучше запиши.

VD>Вопрос только в том причем тут РСБУД?


При том, что множество "во многих" странным образом похоже на "запросы к РСУБД".

ГВ>> Да и честно сказать, даже реализация на Nemerle круто проигрывает банальному циклу в читабельности.

VD>От части — это с непривычки. Я так оба варианта отлично читаю.
VD>Отчасти это потому, что задача действительно на циклах решается без особых потерь.

О! Слышу слова не мальчика...

VD>А отчасти потому, что оторвано от реальности.

VD>В реальности такие выпендрежи бывают крайне редко. А вот просто отфильтровать, отсортировать, сгрупировать, отобрать X элементов пропустив Y элементов — это нужно постоянно.

Вот это как раз и есть отличие "твоей" реальности от "моей". Вот мне, например, ровно наоборот — редко нужно "отфильтровать, сгруппировать, отобрать X элементов пропустив Y элементов", зато часто нужно быстро собрать в кучу и пихнуть в канал не глядя, посчитав crc32 для проформы. Или, например, проверить влетевшее сообщение на корректность, не используя new/delete, прямо по буферу данных. Или, скажем, собрать кучу сообщений из разных источников и плюнуть сигнал, что чудо таки случилось, и все прибежали. Куда мне тут LINQ вклеивать — ума не приложу. Но ведь тоже — источники данных с какой-то точки зрения.

А паче чаяния случается нужда гонять аккурат такую обработку, как у меня во второй задаче. Только в SQL-сервер я её запихнуть не могу и вообще в память полностью загрузить не получится, поскольку памяти будет острая нехватка, а на Win64 юзверь, зараза, переходить не желает. И ещё, шайтан-кнопкодав, хочет, чтобы это всё быстро работало. Мерзавец!

ГВ>>Зато, что любопытно, реализация на Go
Автор: Gaperton
Дата: 22.11.09
по ясности изложения резко обходит всех.

VD>Гы. Красота еще та. Туча бесполезных строк. Спроси у своего друга, на достуге, что будет если в потоке не будет данных. Он ведь так смело из него первый элемент читает.

А это горутина. Будет ждать, пока данные не поступят.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[35]: Кстати
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 26.11.09 01:53
Оценка:
Здравствуйте, gandjustas, Вы писали:

Y>>>А что дальше делать с полученным AST — это уже дело провайдера. Напрмер, реализовать LINQ to LLBLGen, LINQ to Twitter, LINQ to Google,...

ГВ>>Правильно. Это есть вполне нормальное следствие обобщения изначально узконаправленного средства.

G>Это тоже?


Угу. Почему бы нет?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[18]: Ах, да
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 26.11.09 01:55
Оценка:
Здравствуйте, VladD2, Вы писали:

Таки пропустил один вопрос.

VD>>>4. Упрощает ли ЛИНК обрабтку списков объектов по сравнению с другими средствами их обработки доступными в шарпе и васике?

ГВ>>По сравнению с какими?
VD>А что в Шарпе есть какие-то средства отличные от циклов?

Да, в некоторых случаях — упрощает.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[36]: Кстати
От: yuriylsh  
Дата: 26.11.09 02:26
Оценка: 278 (9)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Если тебе не надо об этом думать — никто тебя не заставляет. Просто скажи, что тебе не интересно это обсуждать и выйди из обсуждения. Только какой смысл при этом встревать с опровержениями высказываний других? Ты считаешь LINQ универсальным средством, введённым MS ради заботы о малых сих — нет проблем. А я этого не считаю и поддерживаю разными +-*/ тех, кто высказывается в таком ключе, вот и весь спор. Переубедить меня сможет, вполне вероятно, письмо Билла Гейтса, датированное 2001-м годом, где будет написано: "...we need to implement functional programming for our customers, are you know somebody good in functional languages development?" Если у тебя завалялось такое, то я с удовольствием соглашусь с твоими доводами. Если нет или потёр случайно — ну извини, я продолжаю считать, что первопричиной разработки LINQ явился OR-импеданс. Это просто, понятно и лишено обоснований с привлечением иррациональных соображений.


До Билла Гейтса достучаться думаю не так легко, а вот до Erik Meijer у меня получилось. Надеюсь, к словам создателя LINQ тоже можно засчитать. Опускаю официальну часть письма, сразу ответы Эрика на мои вопросы.
Первый вопрос по сути совпадает с темой топика:

- Is relational data the main reason to start LINQ development?

It is a common misconception that LINQ is strongly coupled to relational data. If you look at the various papers on my homepage (http://research.microsoft.com/en-us/um/people/emeijer/ErikMeijer.html) you see that I emphasize LINQ’s monadic roots. Monads are a way to reason about general “computations” and querying a relational database is just one possible example of that. Take Rx http://msdn.microsoft.com/en-us/devlabs/ee794896.aspx for instance, you see that we define LINQ over event-based and asynchronous computations. That is quite different from your typical relational database I would say. Other examples include LINQ to Sharepoint, LINQ to Twitter, …. Those query “data” but not relational data. Have a look at http://homepages.inf.ed.ac.uk/wadler/topics/monads.html for more examples of possible LINQ data sources.


Второй — ответ на утвержение
Автор: Gaperton
Дата: 17.11.09
, сделанное Гаптероном когда он комментировал мой пост.

Если выкинуть работу с реляционным источником из списка, то вся обозначенная проблема становится достаточно несущественной и незначительной, чтобы не расшибаться в лепешку ради специальной поддержки специального механизма в языке.

Вот ответ Эрика:

- "if you throw away relational data application then impedance mismatch problem becomes somewhat inessential and insignificant to put such a huge effort to add a special support into the language". Do you think it is correct?

As the answer to the first question implies, LINQ is not tied to relational data. What I am trying to say in the interview you quote is that what LINQ does is to emphasize the correspondence between different data models by defining a common interface/pattern that a “data source” can expose and then define a query language in terms of that interface. This in contrast to ther approaches where people are converting their data into a universal data model and querying on that.
LINQ is about composing computations, querying relational data is one special, and important, form of composing computations.


Следующий мой вопрос был кастательно неоднократно здесь поднимающегося сравнения LINQ с реализацией на циклах.

- What are the main advantages of LINQ over using plain simple loops when LINQ is not used for relational data interaction?

That is not a correct question since, again, you assume that you are dealing with explicit data sources. How could you use loops to do Rx-style computations?


Ну и отфонарно вброшенный вопрос:

- Do you think LINQ-like approach would be a good addition for other languages?

Well, F#, Haskell and Scala all have (monad) comprehensions, so obviously yes.

Luck in life always exists in the form of an abstract class that cannot be instantiated directly and needs to be inherited by hard work and dedication.
Re[37]: Кстати
От: yuriylsh  
Дата: 26.11.09 02:32
Оценка:
З.Ы. Завтра напишу ему спасибо за ответы, так что есле есть еще вопросы, могу невзначай присовокупить к своему thank you имейлу
Luck in life always exists in the form of an abstract class that cannot be instantiated directly and needs to be inherited by hard work and dedication.
Re[38]: Кстати
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 26.11.09 04:52
Оценка:
Здравствуйте, yuriylsh, Вы писали:

Y>З.Ы. Завтра напишу ему спасибо за ответы, так что есле есть еще вопросы, могу невзначай присовокупить к своему thank you имейлу


Да нет у меня к нему вопросов. Расспрашивать же, почему он оказался именно в Microsoft, думаю, довольно таки бестактно, да и задавать такие вопросы надо не самому Мейеру, а его руководству. Ну просто по банальной житейской логике: о чём будет говорить создатель вещи? О куче предпосылок к её созданию или о том, какое замечательное решение он нашёл?

Не знаю, кому как, но мне многое сказала персональная страница Мейера на Microsoft Research:

Erik Meijer:

He runs the Cloud Programmability Team at Microsoft, where his primary focus has been to remove the impedance mismatch between databases and programming languages.


И вот тут:

In the past few years I have done "legendary work" with the C# and Visual Basic teams on language and type-system support for bridging the worlds of object-oriented (CLR), relational (SQL), and hierarchical (XML) data, and of course first class functions.


Но менеджмент в Microsoft, надо сказать, весьма толковый.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[39]: Кстати
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 26.11.09 07:15
Оценка:
Здравствуйте, VladD2, Вы писали:

L>>
L>>gmap fromFoo
L>>


VD>Что такое fromFoo?


Я там модуль писал, ты его порезал:

module Test
  (Foo, mkFoo, fromFoo)
where
data Foo = Foo Int
mkFoo = Foo
fromFoo (Foo i) = i


Поскольку fromFoo в модуле, то он имеет доступ к внутренней структуре. Снаружи доступ только через fromFoo.
Re[2]: LINQ только для РСУБД!
От: Alexander Polyakov  
Дата: 26.11.09 17:30
Оценка:
VD>А LINQ — это красиво завернутая (для казуалов) библиотека функций высшего порядка (Select -> map, Where -> Filter, OrderBy -> sort, ...). СУБД тут совершенно не причем.
Так LINQ это не только method syntax, еще же и query syntax прикрутили. Попробуй сджойнить 3-4 таблицы с помощью method syntax. Громоздко, и много лишнего. Это они поправили введением query syntax. В итоге, это уже не просто “библиотека”, а захарткоженные специальные конструкции в языке.

А поскольку список этих захаркоженных методов определялся именно схожестью с SQL-ем, то автор треда отчасти прав. Но, вся забавность ситуации в том, что для РСУБД linq как-то не совсем подходит. Об этом я пишу в соседнем форуме.
Re[38]: Кстати
От: Gaperton http://gaperton.livejournal.com
Дата: 27.11.09 10:22
Оценка:
Здравствуйте, lomeo, Вы писали:

G>>Таких штук в Хаскеле, насколько я понимаю, нет.


L>К сожалению, есть — IORef/STRef/MVar и прочие ссылки и указатели. Достаточно представить себе ADT, оборачивающий один из этих типов, чтобы увидеть проблему.


М-да, пора бы мне уже привыкнуть к тому, что Хаскель может все .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.