emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Ответ Jimmy Bogard по поводу того, может ли CQRS-Команда возвращать результат: 📝 "It might seem rather strange that commands always have a result, but it’s much, much easier to deal with side effects of commands through return parameters than through some…
Еще одна превосходная статья на тему Side-effect of CQRS-query (thanks to @vkhorikov ):
"Applications and their side effects" by Mark Seemann
https://blog.ploeh.dk/2015/09/23/applications-and-their-side-effects/
#DDD #Microservices #SoftwareDesign #SoftwareArchitecture #FunctionalProgramming
"Applications and their side effects" by Mark Seemann
https://blog.ploeh.dk/2015/09/23/applications-and-their-side-effects/
#DDD #Microservices #SoftwareDesign #SoftwareArchitecture #FunctionalProgramming
blog.ploeh.dk
Applications and their side effects
All applications have side-effects, but you can isolate those side-effects at the boundaries.
С поддержкой Generics в Golang открываются новые возможности в использовании приемов функционального программирования.
См. главу "Monadic Error Handling":
https://awalterschulze.github.io/blog/post/monads-for-goprogrammers/
Это вынуждает по новому взглянуть на широко известный среди функциональщиков Railway Oriented Programming:
- https://fsharpforfunandprofit.com/rop/
- https://fsharpforfunandprofit.com/posts/against-railway-oriented-programming/
Перевод на русский статьи "Railway Oriented Programming":
- https://habr.com/ru/post/339606/
Еще одна ссылка, на эту тему:
- https://medium.com/@naveenkumarmuguda/railway-oriented-programming-a-powerful-functional-programming-pattern-ab454e467f31
А здесь, на слайдах, показана трансформация UseCase of Robert Martin в Railway Oriented Programming:
- https://github.com/swlaschin/RailwayOrientedProgramming/blob/master/Railway_Oriented_Programming_Slideshare.pdf
- https://github.com/swlaschin/RailwayOrientedProgramming/blob/master/Railway_Oriented_Programming.pptx
- https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html#use-cases
Кстати, это является и ответом на вопрос, есть ли жизнь без синхронных Domain Events:
📝 "In an object-oriented design, it is common to have domain events raised internally within a bounded context. In that approach, a workflow object raises an OrderPlaced event, and then a handler listens for that and sends the order acknowledgement, and another handler generates a BillableOrderPlaced event, and so on.
<...>
In a functional design, we prefer not to use this approach, because it creates hidden dependencies. Instead, if we need a “listener” for an event, we just append it to the end of workflow...
<...>
This approach is more explicit – there are no global event managers with mutable state – and therefore it is easier to understand and maintain."
- "Domain Modeling Made Functional. Tackle Software Complexity with Domain-Driven Design and F#" by Scott Wlaschin
https://fsharpforfunandprofit.com/books/
Кстати, на github.com по этой теме в топе ребята из @drypython :
- https://github.com/topics/railway-oriented-programming
Одна из библиотек, облегчающих использование Railway Oriented Programming в Python: https://github.com/proofit404/stories
#FunctionalProgramming #DDD #Golang
См. главу "Monadic Error Handling":
https://awalterschulze.github.io/blog/post/monads-for-goprogrammers/
Это вынуждает по новому взглянуть на широко известный среди функциональщиков Railway Oriented Programming:
- https://fsharpforfunandprofit.com/rop/
- https://fsharpforfunandprofit.com/posts/against-railway-oriented-programming/
Перевод на русский статьи "Railway Oriented Programming":
- https://habr.com/ru/post/339606/
Еще одна ссылка, на эту тему:
- https://medium.com/@naveenkumarmuguda/railway-oriented-programming-a-powerful-functional-programming-pattern-ab454e467f31
А здесь, на слайдах, показана трансформация UseCase of Robert Martin в Railway Oriented Programming:
- https://github.com/swlaschin/RailwayOrientedProgramming/blob/master/Railway_Oriented_Programming_Slideshare.pdf
- https://github.com/swlaschin/RailwayOrientedProgramming/blob/master/Railway_Oriented_Programming.pptx
- https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html#use-cases
Кстати, это является и ответом на вопрос, есть ли жизнь без синхронных Domain Events:
📝 "In an object-oriented design, it is common to have domain events raised internally within a bounded context. In that approach, a workflow object raises an OrderPlaced event, and then a handler listens for that and sends the order acknowledgement, and another handler generates a BillableOrderPlaced event, and so on.
<...>
In a functional design, we prefer not to use this approach, because it creates hidden dependencies. Instead, if we need a “listener” for an event, we just append it to the end of workflow...
<...>
This approach is more explicit – there are no global event managers with mutable state – and therefore it is easier to understand and maintain."
- "Domain Modeling Made Functional. Tackle Software Complexity with Domain-Driven Design and F#" by Scott Wlaschin
https://fsharpforfunandprofit.com/books/
Кстати, на github.com по этой теме в топе ребята из @drypython :
- https://github.com/topics/railway-oriented-programming
Одна из библиотек, облегчающих использование Railway Oriented Programming в Python: https://github.com/proofit404/stories
#FunctionalProgramming #DDD #Golang
Adenoid Adventures
Monads for Go Programmers
Why? Monads are all about function composition and hiding the tedious part of it.
After 7 years of being a Go programmer, typing if err != nil can become quite tedious. Everytime I type if err != nil …
After 7 years of being a Go programmer, typing if err != nil can become quite tedious. Everytime I type if err != nil …
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
С поддержкой Generics в Golang открываются новые возможности в использовании приемов функционального программирования. См. главу "Monadic Error Handling": https://awalterschulze.github.io/blog/post/monads-for-goprogrammers/ Это вынуждает по новому взглянуть…
Кстати, агрегаты вот этого DDD/Golang reference application https://github.com/AntonStoeckl/go-iddd выполнены в функциональной парадигме. Об этом автор пишет в сопроводительных статьях к приложению.
📝 "My Aggregate used to be implemented in OOP style with inline state in the past. My little project is event-sourced and I decided a while ago that I want to implement a functional core. Event-Sourcing is quite functional by nature, so I decided that my Aggregate will only consist of functions! My first functional version did not even have a state object. It simply projected all necessary properties into local variables. Not long ago I introduced a currentState object — which is unexposed — so only visible inside the Domain subpackage customer in which my Aggregate lives."
- "Implementing Domain-Driven Design and Hexagonal Architecture with Go (2). Part 2 — How I implement tactical DDD patterns — the Domain layer" by Anton Stöckl
https://medium.com/@TonyBologni/implementing-domain-driven-design-and-hexagonal-architecture-with-go-2-efd432505554
#DDD #Golang #FunctionalProgramming
📝 "My Aggregate used to be implemented in OOP style with inline state in the past. My little project is event-sourced and I decided a while ago that I want to implement a functional core. Event-Sourcing is quite functional by nature, so I decided that my Aggregate will only consist of functions! My first functional version did not even have a state object. It simply projected all necessary properties into local variables. Not long ago I introduced a currentState object — which is unexposed — so only visible inside the Domain subpackage customer in which my Aggregate lives."
- "Implementing Domain-Driven Design and Hexagonal Architecture with Go (2). Part 2 — How I implement tactical DDD patterns — the Domain layer" by Anton Stöckl
https://medium.com/@TonyBologni/implementing-domain-driven-design-and-hexagonal-architecture-with-go-2-efd432505554
#DDD #Golang #FunctionalProgramming
GitHub
GitHub - AntonStoeckl/go-iddd: showcase project for implementing DDD in Go
showcase project for implementing DDD in Go. Contribute to AntonStoeckl/go-iddd development by creating an account on GitHub.
Для тех, кто работает с Golang, - смотрел как-то я эту книгу: "Hands-On Software Architecture with Golang. Design and architect highly scalable and robust applications using Go." by Jyotiswarup Raiturkar
Copyright © 2018 Packt Publishing
Она прекрасна. Удивительное сочетание полноты информации и её краткости. Это скорее конспект, а не книга. Курс молодого бойца. Никакой воды - только все самое нужное. Вряд-ли есть другой способ получить такой колоссальный объем знаний из одной книги. Она, поистине, шедевральна в этом смысле.
Дано практически все, что нужно знать разработчику, на примере Golang. Виды согласованностей, в т.ч. Causal Consistency, Векторные Часы, CAP-теорема, способы достижения консенсуса, в т.ч. RAFT, Paxos, 2PC, основы ООП, композиция vs наследование (кстати, на примере зверушек - известный пример), Design Patterns, основы работы с БД, индексы, формы нормализации, виды транзакций (ACID, BACE), матрица уровней изоляции транзакций, брокеры сообщений, принципы масштабирования и многое другое.
Понятно, что все это впихнуть в одну книгу невозможно, поэтому она выполнена в виде конспекта, т.е. она дает обзор и приводит примеры.
Раз уж речь зашла про Packt Publishing, то еще было бы уместно упомянуть "Learning Functional Programming in Go. Change the way you approach your applications using functional programming in Go." by Lex Sheehan
Copyright © 2017 Packt Publishing
И "Hands-On High Performance with Go. Boost and optimize the performance of your Golang applications at scale with resilience" by Bob Strecansky
Copyright © 2020 Packt Publishing
#Golang #SoftwareDesign #SoftwareArchitecture #FunctionalProgramming
Copyright © 2018 Packt Publishing
Она прекрасна. Удивительное сочетание полноты информации и её краткости. Это скорее конспект, а не книга. Курс молодого бойца. Никакой воды - только все самое нужное. Вряд-ли есть другой способ получить такой колоссальный объем знаний из одной книги. Она, поистине, шедевральна в этом смысле.
Дано практически все, что нужно знать разработчику, на примере Golang. Виды согласованностей, в т.ч. Causal Consistency, Векторные Часы, CAP-теорема, способы достижения консенсуса, в т.ч. RAFT, Paxos, 2PC, основы ООП, композиция vs наследование (кстати, на примере зверушек - известный пример), Design Patterns, основы работы с БД, индексы, формы нормализации, виды транзакций (ACID, BACE), матрица уровней изоляции транзакций, брокеры сообщений, принципы масштабирования и многое другое.
Понятно, что все это впихнуть в одну книгу невозможно, поэтому она выполнена в виде конспекта, т.е. она дает обзор и приводит примеры.
Раз уж речь зашла про Packt Publishing, то еще было бы уместно упомянуть "Learning Functional Programming in Go. Change the way you approach your applications using functional programming in Go." by Lex Sheehan
Copyright © 2017 Packt Publishing
И "Hands-On High Performance with Go. Boost and optimize the performance of your Golang applications at scale with resilience" by Bob Strecansky
Copyright © 2020 Packt Publishing
#Golang #SoftwareDesign #SoftwareArchitecture #FunctionalProgramming
Rob Pike, оказывается, кроме Golang, любит покодить интерпретатор функционального языка программирования... на Golang... Так что, теперь уже никто не скажет, что FP и Golang несовместимы 🙂))
📝 "This program was a joy to put together. Its purpose was fun and education, and in no way to create a modern or even realistic Lisp implementation."
- https://github.com/robpike/lisp
#FunctionalProgramming #Golang
📝 "This program was a joy to put together. Its purpose was fun and education, and in no way to create a modern or even realistic Lisp implementation."
- https://github.com/robpike/lisp
#FunctionalProgramming #Golang
GitHub
GitHub - robpike/lisp: Toy Lisp 1.5 interpreter
Toy Lisp 1.5 interpreter. Contribute to robpike/lisp development by creating an account on GitHub.
"Шпаргалка по функциональному программированию" - Блог компании Яндекс
https://habr.com/ru/company/yandex/blog/547786/
#FunctionalProgramming
https://habr.com/ru/company/yandex/blog/547786/
#FunctionalProgramming
Хабр
Шпаргалка по функциональному программированию
Привет, меня зовут Григорий Бизюкин, я преподаватель Школы разработки интерфейсов и фронтенд-разработчик в Яндексе. Давайте поговорим о функциональном программир...
"От внедрения зависимостей к отказу от зависимостей" - Mark Seemann, перевод Максима Аршинова
https://habr.com/ru/company/jugru/blog/545482/
#FunctionalProgramming #SoftwareDesign
https://habr.com/ru/company/jugru/blog/545482/
#FunctionalProgramming #SoftwareDesign
Хабр
От внедрения зависимостей к отказу от зависимостей
У функционального программирования есть одна большая проблема — о нем очень непросто рассказывать. Попытки донести людям что-то с использованием терминов типа «з...
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Современное определение OOP: 📝 "Объектно-ориентированное программирование — это метод программирования, основанный на представлении программы в виде совокупности взаимодействующих объектов, каждый из которых является экземпляром определенного класса, а классы…
Ранее в этом треде приводилось выссказывание Niklaus Wirt об обстоятельствах, при которых внедрялось OOP. Он писал о модных поветриях и причинах коммерческого порядка.
О коммерческих причинах пишет и основатель языка программирования Erlang - Joe Armstrong:
📝 "At this point I am reminded of the keynote speech of the then boss of IBM in France who addressed the audience at the 7th IEEE Logic programming conference in Paris. IBM Prolog had added a lot of OO extensions. When asked why he replied:
Our customers wanted OO Prolog so we made OO Prolog
I remember thinking “How simple, no qualms of conscience, no soul-searching, no asking ‘Is this the right thing to do’ …”"
- "Why OO Sucks" by Joe Armstrong
https://www.cs.otago.ac.nz/staffpriv/ok/Joe-Hates-OO.htm
#OOP #FunctionalProgramming #SoftwareDesign
О коммерческих причинах пишет и основатель языка программирования Erlang - Joe Armstrong:
📝 "At this point I am reminded of the keynote speech of the then boss of IBM in France who addressed the audience at the 7th IEEE Logic programming conference in Paris. IBM Prolog had added a lot of OO extensions. When asked why he replied:
Our customers wanted OO Prolog so we made OO Prolog
I remember thinking “How simple, no qualms of conscience, no soul-searching, no asking ‘Is this the right thing to do’ …”"
- "Why OO Sucks" by Joe Armstrong
https://www.cs.otago.ac.nz/staffpriv/ok/Joe-Hates-OO.htm
#OOP #FunctionalProgramming #SoftwareDesign
www.cs.otago.ac.nz
Why OO Sucks
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Ранее в этом треде приводилось выссказывание Niklaus Wirt об обстоятельствах, при которых внедрялось OOP. Он писал о модных поветриях и причинах коммерческого порядка. О коммерческих причинах пишет и основатель языка программирования Erlang - Joe Armstrong:…
Это наверное, лучшее объяснение, которое я встречал, о том, чем отличается FP от OOP, и что у них общего:
📝 "OO makes code understandable by encapsulating moving parts. FP makes code understandable by minimizing moving parts."
- Michael Feathers
https://twitter.com/mfeathers/status/29581296216
Это высказывание так же поясняет, почему Functional Programming не равно Anemic Domain Model. Все дело в том, что в Functional Programming обеспечивается ссылочная прозрачность, т.е. накладывается ограничение на изменяемость данных. А между тем, основной недостаток утраты инкапсуляции в Anaemic Domain Model заключается именно в утрате контроля за изменением состояния и обеспечением инвариантов.
#OOP #FunctionalProgramming #SoftwareDesign
📝 "OO makes code understandable by encapsulating moving parts. FP makes code understandable by minimizing moving parts."
- Michael Feathers
https://twitter.com/mfeathers/status/29581296216
Это высказывание так же поясняет, почему Functional Programming не равно Anemic Domain Model. Все дело в том, что в Functional Programming обеспечивается ссылочная прозрачность, т.е. накладывается ограничение на изменяемость данных. А между тем, основной недостаток утраты инкапсуляции в Anaemic Domain Model заключается именно в утрате контроля за изменением состояния и обеспечением инвариантов.
#OOP #FunctionalProgramming #SoftwareDesign
Twitter
Michael Feathers
OO makes code understandable by encapsulating moving parts. FP makes code understandable by minimizing moving parts.
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Ответ Jimmy Bogard по поводу того, может ли CQRS-Команда возвращать результат: 📝 "It might seem rather strange that commands always have a result, but it’s much, much easier to deal with side effects of commands through return parameters than through some…
Скомпилировал все сообщения на тему "Может ли CQRS-команда возвращать результат" в отдельную статью: https://emacsway.github.io/ru/cqrs-command-and-result/
Статья получилась достаточно тяжелой, и для подавляющего большинства специалистов такая детализация рассмотрения этого вопроса вряд ли требуется (всегда можно сослаться, например, на мнение Jimmy Bogard, чтобы аргументировать свою позицию в процессе работы).
Но если кто-то хочет получить глубокое понимание этого вопроса, то статья будет полезной.
#DDD #Microservices #SoftwareDesign #SoftwareArchitecture #FunctionalProgramming #OOP #CQRS #CQS
Статья получилась достаточно тяжелой, и для подавляющего большинства специалистов такая детализация рассмотрения этого вопроса вряд ли требуется (всегда можно сослаться, например, на мнение Jimmy Bogard, чтобы аргументировать свою позицию в процессе работы).
Но если кто-то хочет получить глубокое понимание этого вопроса, то статья будет полезной.
#DDD #Microservices #SoftwareDesign #SoftwareArchitecture #FunctionalProgramming #OOP #CQRS #CQS
emacsway.github.io
Может ли CQRS-команда возвращать результат? — @emacsway's blog
Статья переехала на новый адрес в Distributed Collaborative Knowledge Management System for System Architecture (о проекте).
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Скомпилировал все сообщения на тему "Может ли CQRS-команда возвращать результат" в отдельную статью: https://emacsway.github.io/ru/cqrs-command-and-result/ Статья получилась достаточно тяжелой, и для подавляющего большинства специалистов такая детализация…
Еще одно исследование на тему может ли CQRS-команда возвращать результат:
- "Can command return a value?" by Oskar Dudycz
https://event-driven.io/en/can_command_return_a_value/
- "CQRS facts and myths explained" by Oskar Dudycz
https://event-driven.io/en/cqrs_facts_and_myths_explained/
Предыдущее обсуждение:
- https://t.me/emacsway_log/476
#DDD #Microservices #SoftwareDesign #SoftwareArchitecture #FunctionalProgramming #OOP #CQRS #CQS
- "Can command return a value?" by Oskar Dudycz
https://event-driven.io/en/can_command_return_a_value/
- "CQRS facts and myths explained" by Oskar Dudycz
https://event-driven.io/en/cqrs_facts_and_myths_explained/
Предыдущее обсуждение:
- https://t.me/emacsway_log/476
#DDD #Microservices #SoftwareDesign #SoftwareArchitecture #FunctionalProgramming #OOP #CQRS #CQS
Oskar Dudycz
Can command return a value?
Event-Driven by Oskar Dudycz
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
С поддержкой Generics в Golang открываются новые возможности в использовании приемов функционального программирования. См. главу "Monadic Error Handling": https://awalterschulze.github.io/blog/post/monads-for-goprogrammers/ Это вынуждает по новому взглянуть…
"Functional programming in Go with generics"
- https://ani.dev/2021/05/25/functional-programming-in-go-with-generics/
"Why Go Getting Generics Will Not Change Idiomatic Go"
- http://www.jerf.org/iri/post/2955
#FunctionalProgramming #Golang
- https://ani.dev/2021/05/25/functional-programming-in-go-with-generics/
"Why Go Getting Generics Will Not Change Idiomatic Go"
- http://www.jerf.org/iri/post/2955
#FunctionalProgramming #Golang
ani.dev
Functional programming in Go with generics | ani.dev
Превосходный перевод доклада Scott Wlaschin о композиции в Функциональном Программировании:
"Сила композиции"
- https://habr.com/ru/company/jugru/blog/553028/
#FunctionalProgramming
"Сила композиции"
- https://habr.com/ru/company/jugru/blog/553028/
#FunctionalProgramming
Хабр
Сила композиции
Функциональное программирование может отпугивать сложностью и непрактичностью: «Я далек от всех этих монад, пишу на обычном C#, в докладе про функциональщину ничего не пойму. А если даже напрягусь и...
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Я регулярно упоминаю статью "Clarified CQRS" by Udi Dahan, которая играет критически важное значение в багаже знаний разработчика. На Хабре появился перевод этой статьи: https://m.habr.com/ru/post/545128/ Ну и вообще, парень перевел ряд важных статей: h…
Парень продолжает переводить архи-полезные и архи-актуальные статьи. На этот раз, он перевел ряд статьей Володи Хорикова ( @vkhorikov ). Перечислять все не буду, дам ссылку на список его последних постов:
- https://habr.com/ru/users/ArkadiyXIII/posts/
#DDD #TDD #Testing #FunctionalProgramming
- https://habr.com/ru/users/ArkadiyXIII/posts/
#DDD #TDD #Testing #FunctionalProgramming
Хабр
Статьи / Профиль ArkadiyXIII
"The Specification contravariant functor by Mark Seemann"
- https://blog.ploeh.dk/2021/09/09/the-specification-contravariant-functor/
"Contravariant functors" by Mark Seemann
- https://blog.ploeh.dk/2021/09/02/contravariant-functors/
"The Reader functor" by Mark Seemann
- https://blog.ploeh.dk/2021/08/30/the-reader-functor/
"The Command Handler contravariant functor" by Mark Seemann
- https://blog.ploeh.dk/2021/09/06/the-command-handler-contravariant-functor/
#FunctionalProgramming
- https://blog.ploeh.dk/2021/09/09/the-specification-contravariant-functor/
"Contravariant functors" by Mark Seemann
- https://blog.ploeh.dk/2021/09/02/contravariant-functors/
"The Reader functor" by Mark Seemann
- https://blog.ploeh.dk/2021/08/30/the-reader-functor/
"The Command Handler contravariant functor" by Mark Seemann
- https://blog.ploeh.dk/2021/09/06/the-command-handler-contravariant-functor/
#FunctionalProgramming
blog.ploeh.dk
The Specification contravariant functor
An introduction for object-oriented programmers to the Specification contravariant functor.
Scott Wlaschin про DDD и FP:
"Domain-Driven Design meets Functional Programming"
- https://blog.avanscoperta.it/2021/09/14/domain-driven-design-meets-functional-programming-scott-wlaschin/
#DDD #FunctionalProgramming #SoftwareDesing
"Domain-Driven Design meets Functional Programming"
- https://blog.avanscoperta.it/2021/09/14/domain-driven-design-meets-functional-programming-scott-wlaschin/
#DDD #FunctionalProgramming #SoftwareDesing
Avanscoperta Blog
Domain-Driven Design meets Functional Programming
Scott Wlaschin is interviewed by Matteo Baglini. What makes Domain-Driven Design and Functional Programming a nice pair, how do they work well together and how to get the most out of them.
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Еще одно исследование на тему может ли CQRS-команда возвращать результат: - "Can command return a value?" by Oskar Dudycz https://event-driven.io/en/can_command_return_a_value/ - "CQRS facts and myths explained" by Oskar Dudycz https://event-driven.io/e…
Еще несколько исследований на тему может ли CQRS-команда возвращать результат:
"CQRS. Факты и заблуждения" / Максим Аршинов
- https://habr.com/ru/post/347908/
"CQS versus server generated IDs" by Mark Seemann
- https://blog.ploeh.dk/2014/08/11/cqs-versus-server-generated-ids/
"Returning data from command handlers" by Steven van Deursen
- https://blogs.cuttingedge.it/steven/posts/2012/returning-data-from-command-handlers/
Предыдущее обсуждение:
- https://t.me/emacsway_log/522
#DDD #Microservices #SoftwareDesign #SoftwareArchitecture #FunctionalProgramming #OOP #CQRS #CQS
"CQRS. Факты и заблуждения" / Максим Аршинов
- https://habr.com/ru/post/347908/
"CQS versus server generated IDs" by Mark Seemann
- https://blog.ploeh.dk/2014/08/11/cqs-versus-server-generated-ids/
"Returning data from command handlers" by Steven van Deursen
- https://blogs.cuttingedge.it/steven/posts/2012/returning-data-from-command-handlers/
Предыдущее обсуждение:
- https://t.me/emacsway_log/522
#DDD #Microservices #SoftwareDesign #SoftwareArchitecture #FunctionalProgramming #OOP #CQRS #CQS
Хабр
CQRS. Факты и заблуждения
CQRS — это стиль архитектуры, в котором операции чтения отделены от операций записи. Подход сформулировал Грег Янг на основе принципа CQS, предложенного Бертраном Мейером. Чаще всего (но не всегда)...
"Series of articles about functors, applicatives, and other mappable containers." by Mark Seemann
- https://blog.ploeh.dk/2018/03/19/functors-applicatives-and-friends/
#FunctionalProgramming
- https://blog.ploeh.dk/2018/03/19/functors-applicatives-and-friends/
#FunctionalProgramming
ploeh blog
Functors, applicatives, and friends
Functors and related data structures are containers of values. It's a family of abstractions. An overview for object-oriented programmers.
👍2
Forwarded from Russian Association of Software Architects (Ivan)
Mo - Monads and popular FP abstractions, powered by Go 1.18+ Generics (Option, Result, Either...)
- https://github.com/samber/mo
#FunctionalProgramming #Golang
- https://github.com/samber/mo
#FunctionalProgramming #Golang
GitHub
GitHub - samber/mo: 🦄 Monads and popular FP abstractions, powered by Go 1.18+ Generics (Option, Result, Either...)
🦄 Monads and popular FP abstractions, powered by Go 1.18+ Generics (Option, Result, Either...) - samber/mo
🔥6👍1