Статья по Computation Expressions. Автор: Рысцов Денис
От: Рысцов Денис  
Дата: 19.11.10 00:23
Оценка: 248 (8)
#Имя: FAQ.nemerle.ComputationExpressions-01
KK>Даешь статью по сабжу!

Держи http://habrahabr.ru/blogs/nemerle/108184/

19.11.10 21:30: Ветка выделена из темы Computation Expressions
Автор: WolfHound
Дата: 05.05.10
— VladD2
Re: Статья по Computation Expressions. Автор: Рысцов Денис
От: Denom Украина  
Дата: 19.11.10 10:25
Оценка:
Здравствуйте, Рысцов Денис, Вы писали:

KK>>Даешь статью по сабжу!


РД>Держи http://habrahabr.ru/blogs/nemerle/108184/


Всё эти удобства асинхронных вызовов плюшек очень бы пригодились
при разработке под WP7
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
Re: Статья по Computation Expressions. Автор: Рысцов Денис
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 19.11.10 13:44
Оценка:
Здравствуйте, Рысцов Денис, Вы писали:

KK>>Даешь статью по сабжу!


РД>Держи http://habrahabr.ru/blogs/nemerle/108184/


А почему не в наш журнал?
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re: Оффтоп
От: hardcase Пират http://nemerle.org
Дата: 19.11.10 14:01
Оценка: +3
Здравствуйте, Рысцов Денис, Вы писали:

KK>>Даешь статью по сабжу!


РД>Держи http://habrahabr.ru/blogs/nemerle/108184/



Народ не перестает отжигать, в такие моменты сожалею, что нет инвайта:

1) Поменять местами тип и название параметра в описании методов, плюс влепить между ними двоеточие. Разделять запятой, а не точкой с запятой.
3) Заменить угольные скобки на квадратные в описании генериков. Это массив или доступ по индексу?
4) Тип результата функции писать в конце метода, опять через двоеточие. Кроме того, void все еще есть
5) Лямбду через минус, а не через знак равно.

http://nemerle.org/Banners/?t=Developer!&g=dark /* иЗвиНите зА неРовнЫй поЧерК */
Re[2]: Оффтоп
От: Ka3a4oK  
Дата: 19.11.10 17:57
Оценка:
H>3) Заменить угольные скобки на квадратные в описании генериков. Это массив или доступ по индексу?
С дженериками действительно незадачка получилась — точка эта дурацкая Я знаю причину, читал тред.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Re[2]: Статья по Computation Expressions. Автор: Рысцов Дени
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.11.10 18:33
Оценка:
Здравствуйте, Denom, Вы писали:

D>Всё эти удобства асинхронных вызовов плюшек очень бы пригодились

D>при разработке под WP7

Злые языки говорят, что в WP7 не будет многозадачности. Может врут, правда.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Оффтоп
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.11.10 18:35
Оценка:
Здравствуйте, Ka3a4oK, Вы писали:

H>>3) Заменить угольные скобки на квадратные в описании генериков. Это массив или доступ по индексу?

KK>С дженериками действительно незадачка получилась — точка эта дурацкая Я знаю причину, читал тред.

Во второй версии, думаю, сможем обойти это. Даже, возможно, получится С++-ные скобки для параметров типов использовать — "<>".

А вот расположение типов — это более принципиально.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Статья по Computation Expressions. Автор: Рысцов Денис
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.11.10 18:38
Оценка:
Здравствуйте, Рысцов Денис, Вы писали:

РД>Держи http://habrahabr.ru/blogs/nemerle/108184/


Ты конечно молодец, что приобщаешь Хабровцев к перкрасном .

Но хорошо бы и у нас статьи публиковать. А то многие не могут на Хабре даже комментарий оставить.

У меня вот была пара замечаний, например. Плюс хотелось товарищам ответить.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Статья по Computation Expressions. Автор: Рысцов Дени
От: Denom Украина  
Дата: 20.11.10 22:41
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Denom, Вы писали:


D>>Всё эти удобства асинхронных вызовов плюшек очень бы пригодились

D>>при разработке под WP7

VD>Злые языки говорят, что в WP7 не будет многозадачности. Может врут, правда.

Таки не будет — при нажатии на аппаратную кнопку search или home или при вызове системных диалогов типа отправки sms и т.д.
состояние активной страницы сохраняется, а поля (состояние программы нужно сохранять вручную) а при восстановлении так-же вручную восстанавливать.

Но речь не об этом — в .NET Framework для WP7 WebRequest/WebResponce имеют только асинхронные методы типа
BeginGetResponce/EndGetResponce — соответсвенно есть два варианта либо делать колбэки именованными методами либо использовать лямбды. Соответственно при разработке приложений работающих custom вебсервисами, все методы реализующие обращение к методам веб сервиса тоже должны использовать колбэки в том или ином виде.

Имея поддержку в языке примитивов типа async/await реализация клиентов для вебсервисов значительно бы упростилася и код был бы красивее. Впрочем мне и поддержки VS 2010 и WPF/Silverlight/WP7 было бы достаточно...
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re[4]: Статья по Computation Expressions. Автор: Рысцов Дени
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.11.10 03:04
Оценка:
Здравствуйте, Denom, Вы писали:

VD>>Злые языки говорят, что в WP7 не будет многозадачности. Может врут, правда.

D>Таки не будет — при нажатии на аппаратную кнопку search или home или при вызове системных диалогов типа отправки sms и т.д.
D>состояние активной страницы сохраняется, а поля (состояние программы нужно сохранять вручную) а при восстановлении так-же вручную восстанавливать.

D>Но речь не об этом — в .NET Framework для WP7 WebRequest/WebResponce имеют только асинхронные методы типа BeginGetResponce/EndGetResponce...


Само наличие BeginGetResponce/EndGetResponce как раз говорит о том, что многозадачность таки будет. А то что приложения усыпляются при переключении на системные функции, можно это из каких-то других соображений сделано.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Статья по Computation Expressions. Автор: Рысцов Дени
От: Denom Украина  
Дата: 21.11.10 10:01
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Само наличие BeginGetResponce/EndGetResponce как раз говорит о том, что многозадачность таки будет. А то что приложения усыпляются при переключении на системные функции, можно это из каких-то других соображений сделано.

Тогда скорее не многозадачность а асинхронность/многопоточность
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re: Статья по Computation Expressions. Автор: Рысцов Денис
От: dsorokin Россия  
Дата: 21.11.10 12:05
Оценка:
Интересная статья, но есть терминологическая неточность. Вычислительные выражения являются синтаксическим сахаром для монад и моноидов. List, array и enumerable comprehension являются как раз примерами моноидов. Для них определены yield и yieldcomp, но не заданы return и defcomp/callcomp.

Моноид — это более простая конструкция, чем монада. Определяем главную операцию, а именно Combine. Также определяем единицу моноида, которая соответствует методу Zero у билдера. Для list единица — это пустой список, для array — пустой массив, а для enumerable единица моноида — это пустое перечисление. Вот, собственно и весь моноид.

Между прочим, для монады метод Zero возвращает обычно значение () обернутое в монаду. Во-вторых нет yield/yield, но определены функции Bind и Return. Это совсем другое.

В общем, синтаксический сахар для монад и моноидов похож, но сами объекты разные.
Re[6]: Статья по Computation Expressions. Автор: Рысцов Дени
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.11.10 18:04
Оценка:
Здравствуйте, Denom, Вы писали:

D>Здравствуйте, VladD2, Вы писали:


VD>>Само наличие BeginGetResponce/EndGetResponce как раз говорит о том, что многозадачность таки будет. А то что приложения усыпляются при переключении на системные функции, можно это из каких-то других соображений сделано.

D>Тогда скорее не многозадачность а асинхронность/многопоточность

Кури определения.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Статья по Computation Expressions. Автор: Рысцов Дени
От: Denom Украина  
Дата: 22.11.10 18:18
Оценка:
VD>Кури определения.
Я вкурсе что такое многозадачность, но в том-то и дело — что задача выполняется одна — запущенное приложение, а внем может работать несколько потоков — например несколько запросов к разным сайтам .
Т.е многозадачность есть, но она поточная а не процессная, согласен?
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
Re[2]: Статья по Computation Expressions. Автор: Рысцов Дени
От: dsorokin Россия  
Дата: 22.11.10 18:22
Оценка:
Хочу добавить для полноты, что монада — это тоже моноид, но я совершенно не силен в теории категорий. В общем, лучше не упирать так на монады в статье. Мол, есть синтаксический сахар для них. Мне много больше нравится нейтральное слово "вычисление". Именно поэтому я взял сокращение comp в свое время Вычислением можно обозвать и значение в монаде, и некий процесс генерирования последовательности. Вычисление потом нужно отдельно запустить. Простая и доступная терминология.
Re[8]: Статья по Computation Expressions. Автор: Рысцов Дени
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.11.10 18:28
Оценка:
Здравствуйте, Denom, Вы писали:

VD>>Кури определения.

D>Я вкурсе что такое многозадачность, но в том-то и дело — что задача выполняется одна — запущенное приложение, а внем может работать несколько потоков — например несколько запросов к разным сайтам .
D>Т.е многозадачность есть, но она поточная а не процессная, согласен?

Потоки не имеют никакого отношения к процессам. В винде единицей многозадачности является поток. Процесс — это адресное пространство. Не думаю, что в МС пошли другим путем.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Статья по Computation Expressions. Автор: Рысцов Дени
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.11.10 19:43
Оценка:
Здравствуйте, dsorokin, Вы писали:

D>Интересная статья, но есть терминологическая неточность. Вычислительные выражения являются синтаксическим сахаром для монад и моноидов. List, array и enumerable comprehension являются как раз примерами моноидов. Для них определены yield и yieldcomp, но не заданы return и defcomp/callcomp.


Ну, так может быть ты создашь статью объясняющую теоретическую подоплеку? Только так, чтобы окружающим было понятно (а не только хаскелистам).
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Статья по Computation Expressions. Автор: Рысцов Дени
От: dsorokin Россия  
Дата: 23.11.10 10:25
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ну, так может быть ты создашь статью объясняющую теоретическую подоплеку? Только так, чтобы окружающим было понятно (а не только хаскелистам).


Да, да, помню. Все никак руки не доходят
Re[2]: Статья по Computation Expressions. Автор: Рысцов Дени
От: Рысцов Денис  
Дата: 23.11.10 11:45
Оценка:
Здравствуйте, dsorokin, Вы писали:

D>Интересная статья, но есть терминологическая неточность. Вычислительные выражения являются синтаксическим сахаром для монад и моноидов.


Спасибо, я про применение моноидов в программировании не знал, поэтому и рассматривал yield c zero в computation expressions как попытку скрестить монады с языком, в котором существует оператор yield. Действительно, computation expressions очень легко описать как монады + моноиды. Будет настроение — поправлю статью
Re[3]: Статья по Computation Expressions. Автор: Рысцов Дени
От: hardcase Пират http://nemerle.org
Дата: 23.11.10 11:54
Оценка: :)
Здравствуйте, Рысцов Денис, Вы писали:

РД>Здравствуйте, dsorokin, Вы писали:


D>>Интересная статья, но есть терминологическая неточность. Вычислительные выражения являются синтаксическим сахаром для монад и моноидов.


РД>Спасибо, я про применение моноидов в программировании не знал,


Дык, есть же известный мем:

Монада — всего лишь моноид из категории эндофункторов, что может быть проще?

http://nemerle.org/Banners/?t=Developer!&g=dark /* иЗвиНите зА неРовнЫй поЧерК */
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.