Artemy
Ладно, на самом деле помню ещё
Ayrat
лул
Artemy
<PropertyGroup>
<OtherFlags>--sig:$(OutputPath)\Library.fsi</OtherFlags>
</PropertyGroup>
Artemy
Ayrat
о, збс, ща потестим
Artemy
Там этот флаг имеет смысл убирать после генерации, потому что оно, скорее всего, каждый раз перегенерировать будет
Artemy
И, соответственно, все изменения стираться будут (что крайне печально, если в файл сигнатур документация вынесена)
Ayrat
да, это бесит, но я чо-нить придумаю
Ιπταμενο
Artemy
Ну если FAKE использовать, то там это можно гораздо умнее сделать. Я ж так понимаю, в Fake можно отдельно компилятор F# запускать и передавать ему флаги в зависимости от каких-то условий?
Ayrat
Я вот так стараюсь не делать, хочу оставить всё на уровне dotnet build
Ayrat
но можно, да
Artemy
Я вообще так не делал никогда, т.к. постоянно лень заморачиваться было. Ну а задач, когда какой-нибудь сложный процесс сборки требовался, пока не было
Vladislav
кстати
Vladislav
я правильно понимаю что нет способа узнать установлен ли глобальный тул кроме как попытаться запустить его?
Vladislav
я про дотнет тулы
Ayrat
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
Тут, правда, не о сигнатурах, а документации. Но всё равно годно
Vladislav
а вот это вообще кому надо?
/// <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)
{
}
просто дока ради доки, бесполезный кусок говна
зато ворнинги не кидает!!11
Ayrat
Ionide очень классно доку поддерживает
Artemy
Ayrat
Artemy
А VS только по XML нормальные делает :c
Ayrat
а вот Ionide (а может и сама VSC) по маркдауну тоже делает. И писать проще
Artemy
Это бесспорно
Ayrat
Искал капец как долго, это походу ионид
https://twitter.com/k_cieslak/status/1024750094531403777
Ayrat
ну как разоришься, это просто будет тот же аппПлан в ажуре
Hog
Не - там доступ в стораж тэйбл и сервис бас. Что-то с автобиндингом не получилось - не стал разбираться - вручную пихую.
Ayrat
Klei
Ну тогда надо спрашивать, а почему там не option? И т.д.
Vladislav
Кстати да
Shub
и я бы вместо запиливания в ml-подобном языка условной жавы попытался бы смоделировать это типами
gsomix
gsomix
Я бы, наверное, не отказался от частичной инициализации значениями по умолчанию.
gsomix
Есть просто разница между опциональными значениями и хорошим дефолтом (если такой возможен в домене).
Shub
ну в предложенном неявно домене хороших значений по умолчанию нет
gsomix
Верно.
Shub
в общем, наблюдаемый попытался проиллюстрировать проблему, но настолько неуклюже, что развеселил лаборантов
Анна
он же не изверг какой
Анна
@neftedollar удалит всё равно...
Hog
http://theimowski.com/talk-safe-stack/#/10
Ayrat
Павлуша опять на все деньги выступил
Анна
Интересно, вот не нравится если язык, зачем прямо так выступать