Nikolay
Который вводя юзеры, когда пишут боту
А зачем готовый? И какой есть?
Igor
Я не знаю (думал ты мне расскажешь). Просто сейчас читаю книгу про OCaml, там одна из глав рассказывает про библиотеку Command для парсинга команда-лайн аргументов. У нее прикольный синтаксис на комбинаторах.
Nikolay
Не знаю, не встречал такого
Igor
Ну вот, есть Argu http://fsprojects.github.io/Argu/ я правда хз, можно ли ее прикрутить к парсингу текста в бот
Анна
Но на хабр наверное надо написать пока не забыла
Vladislav
Я людей не очень люблю)
ты доклад для себя делаешь
Nikolay
ты доклад для себя делаешь
Рассказывать то людям надо)
Vladislav
Рассказывать то людям надо)
в плане тебя должно волновать то, что ты подготовил материал и что материал интересен
Vladislav
ты можешь контролировать свое выступление
Vladislav
но не то как публика воспримет
Vladislav
поэтому 2 тебя волновать не должно
Nikolay
Я просто ещё F# не очень знаю, мне было бы проще рассказать про внутренности .Net, оптимизацию и всё такое
Nikolay
Но никому не интересно)
Анна
Поверь, что бы ты ни рассказал, будет всё равно отлично по сравнению с фазовым прыгуном
Nikolay
От аудитории зависит)
Анна
там никакая аудитория не восприняла бы :)
Nikolay
Давайте может идею какую про .Net и C# :)
Vladislav
Igor
Давайте может идею какую про .Net и C# :)
Да делай про F#, ты только потренируйся - статью там для хабра напиши на тему
Vladislav
Syncfusion is a United States company and is subject to US export laws. Consequently, due to your location, we may not allow access to any material on our site. If you believe that this is inaccurate, please contact sales@syncfusion.com Thank you.
Vladislav
Nikolay
Тоже сталкивался)
Ayrat
нашёл свой старый код с которого я начал переходить на фшарп
Ayrat
сигнатуры настолько большие что само название функции на второй строчке
Ayrat
я не сразу понял что вышенаписанное на F# будет в разы меньше места занимать.
Dr. Friedrich
нашёл свой старый код с которого я начал переходить на фшарп
Да, видно, что ты ещё до перехода на F# был совсем отбитым функциональщиком! 😂
x
Да, а почему везде Func?
Ayrat
К этому код пришёл сам, эволюционно. Я не был отбитым фпшником
Dr. Friedrich
и исключение не нужно было бы
А мне норм исключение, я и в F# так терминирую матчи: other -> failwithf <| sprintf "Cannot %A" other
Roman
А мне норм исключение, я и в F# так терминирую матчи: other -> failwithf <| sprintf "Cannot %A" other
а зачем? Компилятор же показывает, когда матч не exhausting
Roman
ну, если не по енуму конечно
Dr. Friedrich
а зачем? Компилятор же показывает, когда матч не exhausting
Вот там, где он мне это показал, иногда приходится дописывать такое.
Dr. Friedrich
Ну, если там логичной обработки не подразумевается.
Ayrat
Да, а почему везде Func?
Прям ход мыслей не расскажу, давно дело было. Это один из десятков вариантов расчёта пари в собачьих бегах. Во всем домене таких классов по логике расчета пари сотни сотен
Dr. Friedrich
У нас тоже был долгоиграющий проект с этими бегами.
Dr. Friedrich
Потом заказчик добавил ещё лошадей, и мы их в коде отнаследовали от собак :)
Ayrat
И вот эволюционно это самый короткий и ёмкий способ записи поведения расчета. На C#
Roman
Ну, если там логичной обработки не подразумевается.
хм, а я еще ни разу не натыкался на такое. В каких случаях он не может понять, что все кейсы выполнены?
Dr. Friedrich
хм, а я еще ни разу не натыкался на такое. В каких случаях он не может понять, что все кейсы выполнены?
А вот в случае с C#-энумом он разве не будет ругаться, если ты числовые значения не похендлишь?
Dr. Friedrich
А ты для какого букмекера пилил?)
Для казахов. Название на всякий случай говорить не буду, а то вдруг оно под NDA.
Dr. Friedrich
Вроде как казахи просили не распространяться — на случай, если вдруг кто-то знает портабельные эксплоиты для нашего софта, видимо.
Roman
А вот в случае с C#-энумом он разве не будет ругаться, если ты числовые значения не похендлишь?
с сишарпным энумом он ругается, даже если все поля перебрал. А что значит похендлить числовые значения?
Dr. Friedrich
Клиенты были довольно хитрые
Dr. Friedrich
Иногда ты знаешь, что у тебя в этом месте кода валидны только несколько значений из перечисления. Но, чтобы заткнуть компилятор, приходится писать сниппет, как я показал выше.
x
И вот эволюционно это самый короткий и ёмкий способ записи поведения расчета. На C#
Просто я пришёл к таким же выводам, но просто следуя принципам минимизации наружних депенденси. Типа если функция работает только с какой-то частью интерфейса то и нефиг его полностью отдавать. Нужно тогда было бы обьявлять более узкий интерфейс, ещё более узкий и тд пока не дошёл до Func
Ayrat
Клиенты были довольно хитрые
ох уж эта среднеазиатская ̶х̶и̶т̶р̶о̶с̶т̶ь̶ мудрость!
Ayrat
Потом заказчик добавил ещё лошадей, и мы их в коде отнаследовали от собак :)
у нас было в начале забавнее. есть пари на победу собаки, а есть на победу по номеру будки (ставишь на первую заранее и пофигу кто там бежит). вот мы в начале разницу не оценили и сделали то ли флагом, то ли наследованием. так у нас в первую ткстовую интеграцию с фронтом и бд побежали будки, а собаки остались. было смешно
Dr. Friedrich
Эта история не шуточная, если чо. Реально была такая цепочка наследования в продакшене. Позже её исправили — общий код вынесли в класс «гонка», а от него сделали два наследника.
Анна
Ну мне надо будет сказать, что с наследованием нужно осторожно и что есть альтернативы
Анна
Вот такой огонек отлично запомнится я думаю
Dmitry
x
😂
Bonart
И вот эволюционно это самый короткий и ёмкий способ записи поведения расчета. На C#
Хм.... Я бы где-то дырочку с выводом типов генериков проковырял. Но в любом случае F# такое умеет заведомо лучше
Bonart
Нужда=либа, с которой без наследования от ее классов не поработаешь
Bonart
Еще нежелателен, но возможен вариант когда все не-sealed классы internal
Анна
С наследованием без нужды ИМХО вообще не нужно
Ну вот к этой мысли цитата @fvnever отлично подойдёт в качестве иллюстрации
Vladislav
нашёл свой старый код с которого я начал переходить на фшарп
Марк Симан мне сказал, что лучше так не делать, когда его спросил про функциональщину в шарпе
Vladislav
Мол у него опыт неоч
Vladislav
Незачем так писать - не поймет никто
Bonart
Незачем так писать - не поймет никто
Там можно смягчить за счет DI и автовывода
x
Мол у него опыт неоч
может что посоветовал взамен?