Ayrat
понимаю. я просто поищу по ключевому слову analyze
Dr. Friedrich
Ну, единственная надежда — эксепшены посмотреть
Dr. Friedrich
Если эксепшен падает, то наверняка починят!
Igor
Чем хуже?
Ну хотя бы тем что в open и module alias не умеет
Igor
Хотя это отдельная печальная тема, в ocaml open можно хоть внутри функции делать)
Ilya
Igor
Посмотрим, когда выйдет
Nuxs🏴☠️
Зачем статические классы в F#?
Ilya
Про алиасы хз. Надо посмотреть.
Nuxs🏴☠️
Реально, для этой штуки же есть модули
Nuxs🏴☠️
Хотя бы просто для формальности порядок соблюдать
Ilya
И ни в коем случае не надо писать код на фшарпе, который будет удобно из сишарпа вызывать.
Nuxs🏴☠️
Вот
Nuxs🏴☠️
Человек дело говорит
Ilya
Предлагаю вообще закрыть фшарп и уйти в окамл. В знак протеста.
Nuxs🏴☠️
Igor
Да, одни модули
- бью на проекты
- иногда прикидываю зависимости через параметры функции
Спасибо f# что запрещает циклические зависимости (и проектам в солюшине)
https://fsharpforfunandprofit.com/posts/recipe-part3/
Nuxs🏴☠️
А вообще, много ли библиотек на фшарпе используются шарпистами?
Nuxs🏴☠️
И да, модули в C# не видно?
Ilya
А вообще, много ли библиотек на фшарпе?
🇺🇦 Дмитрий
Ayrat
Ayrat
факой акку собирают
Ilya
Этот ещё... нбомбер тогда.
Ayrat
ну в основном наоборот, т.к. из фшарпа надо специально себя ограничивать чтобы сишарписты могли пользоваться
Igor
🇺🇦 Дмитрий
я просто не пойму как можно написать это модулем и удобно юзать, вот логгер закидывать в receive методе вообще не очень как то
Ayrat
🇺🇦 Дмитрий
окей, а транзакцию к примеру
🇺🇦 Дмитрий
хочу на начале её создать, потом в конце commit сделать
Ayrat
🇺🇦 Дмитрий
тут нет, а вообще
🇺🇦 Дмитрий
мне transaction прокидывать параметрами?
Ayrat
ничерта не понял!
Ayrat
сойду за умного и промолчу
🇺🇦 Дмитрий
вот хочу я вызвать череду insert в бд
я создаю транзакцию и начинаю её кидать каждому методу в параметр чтоб он под ней сделал инсерт?
Ayrat
да не, в модуле можно сделать:
let insert data = …
let bulkInsert datum =
let transaction = …
for data in datum do
insert data
transaction.Commit()
Ayrat
ну или чот такое, сам там придумай, я не программист
Ilya
Всегда подозревал, что ты просто притворяешься им!
Igor
Да котлинист/yaml-лист залетный 😏
Vasily
Судя по характеру вопросов, @BashkaMen чот недопонимает
Roman
Ayrat
Vasily
Vasily
Статика плохо, когда у тебя чот там постоянно меняется
Vasily
Ну и в ООП есть мантра
Vasily
Я лично не вижу проблем сделать логер статиком
Vasily
Как и обращение к бд
Vasily
Снимает кучу геморроя
🇺🇦 Дмитрий
согласен
Ayrat
Ayrat
да, глобал стейт
Ayrat
(какой ужас)
Ilya
Шаред мемори.
Ayrat
module Whatever =
let mutable logger = defaultLogger
Ayrat
ну то есть серьёзно, не похуй ли чо там
🇺🇦 Дмитрий
ILogger<MailReader> превратится в шаред ILogger
то-есть отказывщись от классов мы уже потеряли, а что мы получили ?
Ayrat
Ayrat
просто прокидывать один логгер в класс подозрительно
Ayrat
я б на месте статик сделал
Ayrat
но тогда неясно зачем класс, у тебя там вроде стейта нет
🇺🇦 Дмитрий
let clients = ConcurrentDictionary()
Ayrat
логгер это не стейт. во всяком случае не бизнес стейт
🇺🇦 Дмитрий
вот мой стейт
Ayrat
ладно, ладно, оставь класс)
🇺🇦 Дмитрий
и то я понимаю что есть вариант этот стейт принимать как параметр, но бля каша получается :(
Vladimir
Когда юзаешь мейлбокс это даже паттерн - обернуть его в класс, так у меня сделано везде
Vladimir
хотя бы потому что мейлбокс не может сам себе сообщение послать без этого
Ayrat