Главное же, что даже крутые системы зав.типов от пруверов вроде Lean не нужны, а достаточно Хаскеля!!1 🚀
В целом я этот язык здорово недолюбливаю, в математическом смысле он местами сильно кривой, а для реальных проектов не подходит во многом по техническим причинам (хотя есть немало исключений). Но, блин, до чего же хороша его система типов! 💪🏻 Точнее, она прежде всего строгая, и тот же F# конечно от неё далёк. Нам не нужно искать и читать исходный код, чтобы узнать, эта функция чистая или нет: вы можете просто посмотреть на её тип!
-> Int или -> IO Int !Поэтому хаскеля по сути достаточно, чтобы формально думать о чём угодно в программировании, включая и архитектурный уровень! 😇 А огромный плюс, что всё же Haskell -- это немножечко мэйнстрим, и его сегодня вполне может освоить и
Вот честно, синхронизм: вчера, когда я это писал себе в важные заметки, добавил
"...Но для правильного применения данного подхода в контексте функциональной архитектуры надо как следуеть изучить монадные трансформеры :)"
(На самом деле, это совсем простая вещь (и часто вообще достаточно функторов), кто мои гайды по ФП проходил, уже в теме автоматически.)
Так вот, сегодня наткнулся на вышеупомянутый loom/velvet, а там "Loom uses Monad Transformer Algebras." 🤘
Я знал, я знал!!1 )))
...Без понимания этой алгебры, ваш ум, искорёженный императивщиной и ООП, будет гуглить на каждом шагу "Is it possible to convert an IO Int into an Int ??" :)
p.s. Умненький читатель к этому моменту должен получить понимание, какая связь между "convert an IO Int into an Int", функциональной и гексагональной архитектурами.
