|
Монады
|
|||
---|---|---|---|
#18+
Кто-нибудь всерьёз использует свои велосипедные монады в C#? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 01:52 |
|
Монады
|
|||
---|---|---|---|
#18+
Разумеется. Пока еще для Roslyn допилят свой null propagating , и когда еще это доберется до наших реалий. Для меня лично предпочтительнее написать: Код: c# 1. 2. 3. 4.
чем писать лесенку вида Код: c# 1. 2. 3.
учитывая, что в реальности эти лесенки бывают намного длинее и нетривиальнее. Хотя, конечно, обещаемое в Roslyn смотрится изящнее: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 06:30 |
|
Монады
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Не думаю, что null propagating полностью отменит необходимости своих костылей, так как в With можно задать любое выражение, а n/p работает только со свойствами. Ещё меня интересует Maybe/Nullable вместо утомительного написания контрактов и проверок для null checking. Вот бы ещё ввели оператор, типа SomeMethod(SomeType !argument), эх... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 06:58 |
|
Монады
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныРазумеется. Пока еще для Roslyn допилят свой null propagating , и когда еще это доберется до наших реалий. Для меня лично предпочтительнее написать: Код: c# 1. 2. 3. 4.
чем писать лесенку вида Код: c# 1. 2. 3.
Не проще нормально отформатировать? Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Сон Веры Павловныучитывая, что в реальности эти лесенки бывают намного длинее и нетривиальнее.Пофиг. Решается форматированием. Сон Веры ПавловныХотя, конечно, обещаемое в Roslyn смотрится изящнее: Код: c# 1.
Нах не нужно... зы: Извращенцы... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 07:38 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КНе проще нормально отформатировать? фу-фу-фу. монады гораздо читабельней и безопасней. очень часто приходится работать с графом объектов, и эти проверки не доставляют ни на этапе разработки, ни на этапе сопровождения. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 07:51 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КПофиг. Решается форматированием. Нет, не пофиг. Выше приведен был самый простейший случай, и только одна монада - в реальности их может быть намного больше. Некогда на GotDotNet в блогах была статья про монадический синтатксис. сейчас из-за реорганизации это всё дело куда-то подевалось - там рассматривался такой пример: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
и вариант решения с монадами: Код: c# 1. 2. 3. 4. 5. 6.
- и это опять же достаточно искусственный пример, в реальности бывает всё намного хуже. Я считаю, что это прекрасная замена бесконечным стопками if'ов (тот самый вышеупомянутый граф объектов), от которых начинает в глязах рябить. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 08:12 |
|
Монады
|
|||
---|---|---|---|
#18+
hVosttКто-нибудь всерьёз использует свои велосипедные монады в C#?Использую, работают. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 08:15 |
|
Монады
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныАлексей КПофиг. Решается форматированием. Нет, не пофиг. Выше приведен был самый простейший случай, и только одна монада - в реальности их может быть намного больше. Некогда на GotDotNet в блогах была статья про монадический синтатксис. сейчас из-за реорганизации это всё дело куда-то подевалось - там рассматривался такой пример: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
и вариант решения с монадами: Код: c# 1. 2. 3. 4. 5. 6.
Выделение метода? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Сон Веры Павловныи это опять же достаточно искусственный пример, в реальности бывает всё намного хуже. Я считаю, что это прекрасная замена бесконечным стопками if'ов (тот самый вышеупомянутый граф объектов), от которых начинает в глязах рябитьКаждый сложный пример всегда можно разбить на множество простых. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 08:33 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей ККаждый сложный пример всегда можно разбить на множество простых. Монады это как раз и делают, только универсально. Задача обхода графов объектов вполне типичная, и повторяется множество раз. Вполне логично запилить универсальное решение по принципу less is more . Тоже самое можно сказать и об LINQ и лямбдах -- зачем они нужны, если есть циклы и всегда можно разбить метод на кучку мелких методов. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 08:41 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAИспользую, работают. Maybe тоже используешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 08:43 |
|
Монады
|
|||
---|---|---|---|
#18+
hVosttАлексей ККаждый сложный пример всегда можно разбить на множество простых. Монады это как раз и делают, только универсально. Задача обхода графов объектов вполне типичная, и повторяется множество раз.Эта задача успешно решается родными средствами языка. hVosttВполне логично запилить универсальное решение по принципу less is more .На любителя. hVosttТоже самое можно сказать и об LINQ и лямбдах -- зачем они нужны, если есть циклы и всегда можно разбить метод на кучку мелких методов.Там экономится много строк кода. Тут экономии не вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 08:45 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КЭта задача успешно решается родными средствами языка. Ну так кастомная реализация монад -- это и есть решение родными средствами языка. Используются методы расширения, функторы и деревья выражений. Монадический синтаксис более выразителен и лаконичен вместо лесенки условий или выделения методов. У разбиения метода на более мелкие методы тоже есть придел, и когда-то может встать поперёк горла одни и те же действия, без которых можно вполне обойтись. Алексей КТам экономится много строк кода. Тут экономии не вижу. Экономия и выразительность намерений (что даже гораздо важнее) более чем очевидны. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 08:51 |
|
Монады
|
|||
---|---|---|---|
#18+
Вопрос всплыл после прочтения статьи Контракты vs. Монады? , и мне стало интересно, кто-нибудь пробовал внедрить монады для борьбы с нулевыми ссылками, или обходимся контрактами и чеками в каждом методе? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 08:53 |
|
Монады
|
|||
---|---|---|---|
#18+
hVosttАлексей КЭта задача успешно решается родными средствами языка. Ну так кастомная реализация монад -- это и есть решение родными средствами языка. Используются методы расширения, функторы и деревья выражений .System.LINQ.Expression? И компилируются поди налету? Видимо, торопиться некуда. hVosttМонадический синтаксис более выразителен и лаконичен вместо лесенки условий или выделения методов.В данном случае - нет. hVosttУ разбиения метода на более мелкие методы тоже есть приделМожно обойтись и без выделения метода. Никто не заставляет. hVostt, и когда-то может встать поперёк горла одни и те же действия, без которых можно вполне обойтись.Описывать на каждый чих лямбду удовольствие тоже не из приятных. hVosttАлексей КТам экономится много строк кода. Тут экономии не вижу. Экономия и выразительность намерений (что даже гораздо важнее) более чем очевидны.Субъективно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 09:01 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КhVosttМонадический синтаксис более выразителен и лаконичен вместо лесенки условий или выделения методов.В данном случае - нет. Трудно спорить с учётом того, что никакого конкретного (данного) случая не обсуждается. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 09:11 |
|
Монады
|
|||
---|---|---|---|
#18+
hVosttАлексей Кпропущено... В данном случае - нет. Трудно спорить ...Я не спорю, я делюсь впечатлениями. :-) hVostt... с учётом того, что никакого конкретного (данного) случая не обсуждается.Выше был приведён неубедительный для меня пример. Предложите другой. зы: Код: c# 1.
На счёт этого я погорячился. Поддержка этого на уровне языка будет полезна. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 09:16 |
|
Монады
|
|||
---|---|---|---|
#18+
hVosttskyANAИспользую, работают. Maybe тоже используешь?Конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 09:30 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КВыше был приведён неубедительный для меня пример. Предложите другой. Ну так экстраполируйте :) Представьте граф из 10 вложенных объектов. В чём великий смысл описывать одно и тоже два раза? Это же типичная задача. Сначала проверять, затем извлекать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 09:31 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAhVosttпропущено... Maybe тоже используешь?Конечно. О, круто! ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 09:31 |
|
Монады
|
|||
---|---|---|---|
#18+
Думаю, если разрешить в команде более чем из 3-х человек каждому форматировать код так, как он считает "нормально", то через полгода осознание того, что лучше бы использовали монады, само придёт ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 09:36 |
|
Монады
|
|||
---|---|---|---|
#18+
hVosttАлексей КВыше был приведён неубедительный для меня пример. Предложите другой. Ну так экстраполируйте :)Экстраполировал, ужаснулся. :-) hVosttПредставьте граф из 10 вложенных объектов. В чём великий смысл описывать одно и тоже два раза? Это же типичная задача. Сначала проверять, затем извлекать.Повторюсь. Не вижу смысла использовать лямбды там, где без них можно обойтись. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 09:40 |
|
Монады
|
|||
---|---|---|---|
#18+
skyANAДумаю, если разрешить в команде более чем из 3-х человек каждому форматировать код так, как он считает "нормально", то через полгода осознание того, что лучше бы использовали монады, само придёт Административные способы воздействия более эффективны. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 09:52 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КНе вижу смысла использовать лямбды там, где без них можно обойтись. так везде можно.... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 10:12 |
|
Монады
|
|||
---|---|---|---|
#18+
ИзопропилАлексей КНе вижу смысла использовать лямбды там, где без них можно обойтись. так везде можно....Но не везде нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 10:18 |
|
Монады
|
|||
---|---|---|---|
#18+
Алексей КskyANAДумаю, если разрешить в команде более чем из 3-х человек каждому форматировать код так, как он считает "нормально", то через полгода осознание того, что лучше бы использовали монады, само придёт Административные способы воздействия более эффективны.Зачем было предлагать то, что уже запрещено административными способами? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2014, 11:37 |
|
|
start [/forum/topic.php?fid=20&msg=38713658&tid=1402538]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 156ms |
0 / 0 |