
Evgeniy
31.05.2018
15:11:29
https://gregshackles.com/writing-net-core-global-tools-with-fsharp
Дон Сайм травит байки про компилятор в слаке.

Andrew
31.05.2018
17:54:08
Всем привет)
Работал кто с Piglet? Пытаюсь что то сделать по этому туториалу http://timjones.io/blog/archive/2014/04/13/writing-a-minic-to-msil-compiler-in-fsharp-part-0-introduction
Падает ексепшн System.InvalidOperationException: Sequence contains no elements в Piglet.Parser.Construction.GotoTable.GetMostCommonGotos, конкретно там IEnumerable.First()`` по пустой коллекции и дает эксепшн
Гугол не помог)

Roman
31.05.2018
17:55:56

Google

Andrew
31.05.2018
17:56:10
Ну это ж либа из нугета)
Сорцы ее качать я не хочу

Roman
31.05.2018
17:57:42
А

Evgeniy
01.06.2018
05:25:36
Доброе утро.
https://twitter.com/praeclarum/status/1002247165182279680

Roman
01.06.2018
06:54:40
из код явно в звисимости не скачет, но зато в документцию по стандртно либе направляет.
Удобная вещь!

Vlad
01.06.2018
07:07:02

Roman
01.06.2018
07:09:27
https://twitter.com/praeclarum/status/1002247165182279680
In the modern world of release many, release often library development, it’s sometimes hard to tell what’s changed between different versions of a library.
To solve that problem, fuget.org can automatically generate API diffs between any two versions of a nuget package.

Friedrich
01.06.2018
08:18:42
https://gregshackles.com/writing-net-core-global-tools-with-fsharp/
Уже обсудили?

Google

Evgeniy
01.06.2018
08:20:23
Да.
Ну, как обсудили. Почитали, помолчали. :)

Дед Пегас
01.06.2018
08:27:27
Продуктивненько.)

Andrew
01.06.2018
13:09:07
Ребят, привет
Как можно сделать аналог and в DU для обычных функций? Типо чтобы я мог вызывать функцию которая обьявлена ниже чем место, откуда вызываю

Evgeniy
01.06.2018
13:12:32

A64m
01.06.2018
13:13:02
let rec foo = bar
and bar = foo
должно работать

Friedrich
01.06.2018
13:13:44

Andrew
01.06.2018
13:14:13
Спасибо :)

Roman
01.06.2018
13:54:10
Телеграм перестал коннектится с pc :(
https://github.com/Dolfik1/funogram/pull/8
Посмотрите плз

Friedrich
01.06.2018
13:55:45

Roman
01.06.2018
13:56:14

Nikolay
01.06.2018
13:56:58

Roman
01.06.2018
13:57:13

Nikolay
01.06.2018
13:57:34
Я видел
Но явная зависимость от HttpClient это не очень
Да и вообще не функциональненько
А ты же знаешь как я не люблю такие уродства)

Friedrich
01.06.2018
13:59:37

Google

Nikolay
01.06.2018
14:00:57
Плюс телеграм может работать через websocket
Бот апи
И типа пилить явную зависимость от HttpClient не гуд

Roman
01.06.2018
14:08:00
Просто мы ей не управляем когда она создаётся внутри где-то

Nikolay
01.06.2018
14:08:30
Суть в том, что тот, кто пользуется библиотекой про неё ничего знать не должен

Roman
01.06.2018
14:08:53

Nikolay
01.06.2018
14:09:02
Так а когда прокси задаёт?)

Roman
01.06.2018
14:09:02
Берет токен обновляет и все
По новому может. т.е. если нужен, то вот он, если не нужен то и не лезь.

Nikolay
01.06.2018
14:14:47
Это должна быть забота библиотеки

Evgeniy
01.06.2018
14:18:24

Vlad
01.06.2018
14:19:21
Покажите.
Httpclientfactory в 2.1 нет коре (или 2.1 аспнет мвц)
Не помню точно

Friedrich
01.06.2018
14:20:11

Roman
01.06.2018
14:21:02
Это должна быть забота библиотеки
Забота библиотеки это работа с telegram api, конечно было бы очень круто, чтоб транспортный слой легко заменялся, но он туда встроен как httpClient по дефолту. Видно его или нет, это другой вопрос. Но по идее, в последующем можно HttpClient заменить на набор функций для get и post запросов, либе от этого не должно быть ни горячо ни холодно. Так вынос этого функционала во вне даёт бОльшую управляемость и задел на заменяемость в будущем, чем сокрытие и неявное создание HttpClient внутри либы.

Google

Roman
01.06.2018
14:23:01
И тоже с явной инъекцией HttpMessageHandler
В общем @Dolfik если знаешь другой вариант настройки прокси, то было бы круто его увидеть.
Я посмотрел что HttpClient использует IWebProxy всеравно, и инжектить только эту зависимость смысла нет, наверное, если можно весь клиент настроить. Ну и так получается по клиенту на Config.

Vasily
01.06.2018
14:28:40
Пишите билдер,чо
С дефолтной имплементацией через хттпклиент
По факту это выльется в некоторый слой абстракций

Владислав
01.06.2018
14:45:22
Single case type мне немного мозг сломали. Если есть функция, которая принимает некоторую запись {email: EmailAddress}, то как правильно создавать эту запись? На входе у меня есть только строка. И этот EmailAddress может быть переиспользован во многих типах. Каждый раз необходимо описывать как я хочу построить этот тип из примитивов?

Vasily
01.06.2018
14:49:23
Заверни в модуль с create функцией

Владислав
01.06.2018
14:56:13
да, я уже сделал такой вариант, но когда есть {email: string; password: string} и это надо преобразовать в {email:EmailAddress; password: Password}, то ладно, но когда у меня будет много моделей, где используется EmailAddress. Все эти маппинги надо руками создавать?

Roman
01.06.2018
14:57:17
Правильно я понимаю что боль по поводу создания рекордов?

Vasily
01.06.2018
14:57:44
Это называется лифтинг

Владислав
01.06.2018
14:59:07
но когда смотрю на Single case type, то пока не представляю удобного способа превратить примитивы в них

Vasily
01.06.2018
15:00:37
В целом, можно написать тип с opExplicit

Roman
01.06.2018
15:00:49

Vasily
01.06.2018
15:01:09
Но это для конвертации в строку ок

Владислав
01.06.2018
15:02:08
Спасибо!

Nikolay
01.06.2018
15:09:17
Я же говорю, может быть http, а может быть websocket
А завтра добавят mtproto

Google

Nikolay
01.06.2018
15:11:09
И мы не должны ломать совместимость с предыдущими версиями :)

Vasily
01.06.2018
15:16:16
Пиши билдер

Nikolay
01.06.2018
15:21:44

Roman
01.06.2018
15:27:09
И мы не должны ломать совместимость с предыдущими версиями :)
Очень много зависит от окружения. Мб пользователю надо чтоб было именно по http. Тогда он явно указывает что и где. А как библиотека сама разрулит прокси?
По твоей логике, либа должна сама лезть в инет и искать список проксей и их юзать.
Явное лучше чем неявное.
И то что пользователь видит что либа работает с HttpClient хорошо, потому что когда будет выбор из большего кол-ва транспортных слоев, то он сможет выбирать и ему нужно будет выбирать. А сейчас в либе для пользователя все неявно, и наверное это хорошо, но в РФ такой бот не будет работать, т.к. либа скрыла возможность поставить проксю

Nikolay
01.06.2018
15:27:54

Friedrich
01.06.2018
15:28:18
https://t.me/vshapenko_builders
↑ все высказывания Василия про билдеры

Roman
01.06.2018
15:28:29

Nikolay
01.06.2018
15:28:50

Roman
01.06.2018
15:28:51

Nikolay
01.06.2018
15:29:12

Roman
01.06.2018
15:30:01
Эмм, зачем?
Ну, например там будет фасад скрывающий что-то или там будут сайдэффекты или мне надо логировать все подключения идущие через проксю и тд какая разница?)

Friedrich
01.06.2018
15:30:03
Там есть даже ужасные вещи, например https://t.me/vshapenko_builders/11

Roman
01.06.2018
15:30:37

Nikolay
01.06.2018
15:30:55

Roman
01.06.2018
15:31:15