@Fsharp_chat

Страница 584 из 772
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()`` по пустой коллекции и дает эксепшн Гугол не помог)

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
https://twitter.com/praeclarum/status/1002247165182279680
Он еще и декомпилирует! Интересно по зависимостям скачет? щ гляну

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

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 для обычных функций? Типо чтобы я мог вызывать функцию которая обьявлена ниже чем место, откуда вызываю

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

Friedrich
01.06.2018
13:13:44
let rec foo = bar and bar = foo должно работать
И ещё module rec, да. Оба варианта есть по ссылке выше :)

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

Roman
01.06.2018
13:54:10
Телеграм перестал коннектится с pc :(

https://github.com/Dolfik1/funogram/pull/8 Посмотрите плз

https://github.com/Dolfik1/funogram/pull/8 Посмотрите плз
@Dolfik все же я явно вынес Клиента

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
Но явная зависимость от HttpClient это не очень
Это поняли уже в MS, и теперь какую-то фабрику там строят.

Google
Nikolay
01.06.2018
14:00:57
Плюс телеграм может работать через websocket

Бот апи

И типа пилить явную зависимость от HttpClient не гуд

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

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

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

Roman
01.06.2018
14:09:02
Берет токен обновляет и все

Так а когда прокси задаёт?)
Ну так тогда он ему нужен, а он до него по старому варианту добраться не может

По новому может. т.е. если нужен, то вот он, если не нужен то и не лезь.

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

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 внутри либы.

Да, я об этом говорю.
В итоге всеравно 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. Все эти маппинги надо руками создавать?

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

Владислав
01.06.2018
14:59:07
Правильно я понимаю что боль по поводу создания рекордов?
да, я пытаюсь сравнивать с аттрибутами валидации, где проверка выполняется автоматически и хоть и нет специфических типов все достаточно удобно

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

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

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

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

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 хорошо, потому что когда будет выбор из большего кол-ва транспортных слоев, то он сможет выбирать и ему нужно будет выбирать. А сейчас в либе для пользователя все неявно, и наверное это хорошо, но в РФ такой бот не будет работать, т.к. либа скрыла возможность поставить проксю

Friedrich
01.06.2018
15:28:18
Пиши билдер
Господа, у меня для вас небольшой анонс.

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

Roman
01.06.2018
15:28:29
Нет, настройки прокси в конфиге
А если мне нужна своя имплементация прокси?

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:31:15

Страница 584 из 772