Artemy
Ладно, на самом деле помню ещё
Ayrat
лул
Artemy
<PropertyGroup> <OtherFlags>--sig:$(OutputPath)\Library.fsi</OtherFlags> </PropertyGroup>
Klei
https://reactiveui.net/docs/handbook/events/ вот чото такое в тыщу раз круче (Rx для F# тоже есть, кажется, можно красиво запайпить)
Щас почти ничего не пишу на wpf. А то что пишу особых проблем не доставляет. <жуткое скандинавское название> иногда юзаю, более чем хватает.
Artemy
<PropertyGroup> <OtherFlags>--sig:$(OutputPath)\Library.fsi</OtherFlags> </PropertyGroup>
Не помню только, нужно ли $(OutputPath) указывать
Ayrat
о, збс, ща потестим
Artemy
Там этот флаг имеет смысл убирать после генерации, потому что оно, скорее всего, каждый раз перегенерировать будет
Artemy
И, соответственно, все изменения стираться будут (что крайне печально, если в файл сигнатур документация вынесена)
Ayrat
да, это бесит, но я чо-нить придумаю
Artemy
Ну если FAKE использовать, то там это можно гораздо умнее сделать. Я ж так понимаю, в Fake можно отдельно компилятор F# запускать и передавать ему флаги в зависимости от каких-то условий?
Ayrat
Я вот так стараюсь не делать, хочу оставить всё на уровне dotnet build
Ayrat
но можно, да
Artemy
Я вообще так не делал никогда, т.к. постоянно лень заморачиваться было. Ну а задач, когда какой-нибудь сложный процесс сборки требовался, пока не было
Vladislav
кстати
Vladislav
я правильно понимаю что нет способа узнать установлен ли глобальный тул кроме как попытаться запустить его?
Vladislav
я про дотнет тулы
Vladislav
хм
Ayrat
первая команда чекает, есть ли тул по пути вторая проверяет глобально
Vladislav
Ayrat
"Как начать разговор о Гопаке с 1ой же фразы"
Bonart
Клуб юных гопакеров
Ayrat
короче, генератор файлов сигнатур в FSC - говно
Ιπταμενο
Почему?
Ayrat
во-первых он его генерит в ОДИН файл для проекта и надо ручками разбивать на файлы
Ayrat
во-вторых, он его генерит невалидным
Ayrat
:D
Ayrat
идентификторы вида ``This is name`` превращает в ( This is name )
Ayrat
это вообще нормально?)
Ayrat
ну и в-третьих уже было сказано что он перетирает
Ayrat
я хз как с этим работать, нужен пример. В visualfsharp репе я ничего не нашёл
Vladislav
а сигнатуры когда нужны? я просто не использовал ни разу их, а зачем нужны - забыл
Ayrat
а сигнатуры когда нужны? я просто не использовал ни разу их, а зачем нужны - забыл
там можно сделать изи инкапсуляцию, вырезав куски кода и проще доки рисовать
Ayrat
ну и такие вещи как дока для дефолтного конструктора только в файле сигнатур доступна
Artemy
Да и вообще доку туда хорошо вынести, чтобы код реализации не разбухал
Ayrat
т.е. можно в файле имплементации писать только имплементацию не заморачиваясь на private/public а в файле сигнатур оставить только внешнее апи с докой
Ayrat
и оно при компиляции само соберёт как public private
Ayrat
да, я тоже не люблю когда эта ебическая xml дока занимает 90% файла
Artemy
Не знаю, существуют ли те, кому это по вкусу.)
Ayrat
вот пример https://github.com/akkadotnet/akka.net/blob/dev/src/core/Akka/Dispatch/AbstractDispatcher.cs
Ayrat
хотя это как раз абстрактный диспетчер, типа сигнатура) вот конкретный https://github.com/akkadotnet/akka.net/blob/dev/src/core/Akka/Dispatch/Dispatcher.cs
Ayrat
один хер там этой разметки xml больше чем кода
Artemy
Да, исходники не очень удобно читать
Ayrat
а вот это вообще кому надо? /// <summary> /// TBD /// </summary> /// <param name="configurator">TBD</param> /// <param name="id">TBD</param> /// <param name="throughput">TBD</param> /// <param name="throughputDeadlineTime">TBD</param> /// <param name="executorServiceFactory">TBD</param> /// <param name="shutdownTimeout">TBD</param> public PinnedDispatcher(MessageDispatcherConfigurator configurator, string id, int throughput, long? throughputDeadlineTime, ExecutorServiceFactory executorServiceFactory, TimeSpan shutdownTimeout) : base(configurator, id, throughput, throughputDeadlineTime, executorServiceFactory, shutdownTimeout) { } просто дока ради доки, бесполезный кусок говна
Artemy
Мне кажется, что над генерацией fsi уже просто очень давно не работали. Т.е. сделали её такой, какая она сейчас, много лет назад и оставили. Так-то не самая приоритетная из фич. Более важные делаться не успевают
Ayrat
да, вероятно. Я забью пожалуй, слишком дорого поддерживать в рабочем состоянии. Буду писать маркдауном над методами без XML
Artemy
Вот такое хорошее предложение по улучшению недавно среди issue нашёл: https://github.com/Microsoft/visualfsharp/issues/4154
Artemy
Тут, правда, не о сигнатурах, а документации. Но всё равно годно
Ayrat
Ionide очень классно доку поддерживает
Ayrat
зато ворнинги не кидает!!11
А ещё docCoverage показывает 100%!!!1
Ayrat
XML-дока, вроде же, в основном ради тултипов интересна.
ну так Ionide тултиы делает просто божественные
Artemy
А VS только по XML нормальные делает :c
Ayrat
а вот Ionide (а может и сама VSC) по маркдауну тоже делает. И писать проще
Artemy
Это бесспорно
Ayrat
Искал капец как долго, это походу ионид https://twitter.com/k_cieslak/status/1024750094531403777
Hog
да, там бесплатный лимит отличный
Пет-прожект есть на их - консампшон плэн. 3 дня тестирования. День «продакшона» - $0.08
Ayrat
Пет-прожект есть на их - консампшон плэн. 3 дня тестирования. День «продакшона» - $0.08
ну это смотря как делать) если отдавать статику юзерам, то разоришься, да. Но они не для статики же
Ayrat
ну как разоришься, это просто будет тот же аппПлан в ажуре
Hog
Не - там доступ в стораж тэйбл и сервис бас. Что-то с автобиндингом не получилось - не стал разбираться - вручную пихую.
Shub
У Василия опять бомбит с F# :D https://twitter.com/kot_2010/status/1060577015559020555
зачем так писать? или с каких пор это ^^^ стало лучше чем type Address = Address of string | Undefined ;; type Person = { name : string; age : int; address : Address } ;; ?
Klei
Ну тогда надо спрашивать, а почему там не option? И т.д.
Vladislav
Кстати да
Shub
Ты прям в корень узрел, кстати)
я ненастоящий сварщик. я на ocaml писал
Shub
Ну тогда надо спрашивать, а почему там не option? И т.д.
подозреваю, что там хреново выбран пример. адреса с неопределенными полями не бывает, бывает отсутствие адреса. не бывает человека без возраста, бывает анонимус, про которого ничего неизвестно
Shub
и я бы вместо запиливания в ml-подобном языка условной жавы попытался бы смоделировать это типами
gsomix
Я бы, наверное, не отказался от частичной инициализации значениями по умолчанию.
gsomix
Есть просто разница между опциональными значениями и хорошим дефолтом (если такой возможен в домене).
Shub
ну в предложенном неявно домене хороших значений по умолчанию нет
gsomix
Верно.
Shub
в общем, наблюдаемый попытался проиллюстрировать проблему, но настолько неуклюже, что развеселил лаборантов
Анна
он же не изверг какой
Анна
@neftedollar удалит всё равно...
Hog
http://theimowski.com/talk-safe-stack/#/10
Ayrat
Павлуша опять на все деньги выступил
Анна
Интересно, вот не нравится если язык, зачем прямо так выступать