@Fsharp_chat

Страница 486 из 772
Vasily
27.02.2018
13:54:04
Эй, чуваки, ежели это такая большая проблема, то давайте починим!
Ну-ну... я вроде месяцев 8 назад заморачивался этой темой :)

Friedrich
27.02.2018
13:54:20
Смотри, можно научить провайдер, чтоб он строку подключения читал из файла сам.

А путь к файлу будет литералом.

Google
Friedrich
27.02.2018
13:54:56
Это прям прозрачно внедряется и не ломает существующий код.

тред не читай @ сразу отвечай
Я прочитал. Кажется, ты просто меня не понял!

Vlad
27.02.2018
13:55:11
А вот нифига. :(
Вообще в идеале бы sql provider отдавать схему в виде sql скрипта в build time

Подумал

Ведь он все равно на живую бд берет зависимость

Evgeniy
27.02.2018
13:55:56
Я прочитал. Кажется, ты просто меня не понял!
Зачем провайдеру уметь читать строку подключения из файла, если для этого есть соответствующие провайдеры?

Vasily
27.02.2018
13:56:20
А это вроде старая тема вызова провайдера из провайдера :)

Evgeniy
27.02.2018
13:56:38
А это вроде старая тема вызова провайдера из провайдера :)
Не, мы сейчас более простую тему обсуждаем.

Vasily
27.02.2018
13:56:48
Проблема-то в другом, имхо

На билд машине должна быть идентичная боевой база развернута

Friedrich
27.02.2018
13:57:08
Зачем провайдеру уметь читать строку подключения из файла, если для этого есть соответствующие провайдеры?
Затем, что из файла не получается прочитать литерал, чтоб передать его другим провайдерам?

Google
Friedrich
27.02.2018
13:57:30
Проблема-то в другом, имхо
Я согласен, что это большая проблема, но чуваки выше по треду жалуются на значительно более мелкую!

Evgeniy
27.02.2018
13:58:13
@fvnever tl;dr StringReader. Но нужно бы еще починить провайдеры в FSharp.Configuration

Vasily
27.02.2018
13:58:14
Ну фишка в том, что невозможно при компиляции прочитать строку из файла

Как я понимаю

И записать ее литералом

Friedrich
27.02.2018
13:59:01
Читай лог дальше.
Ничо там нету дальше, это конец.

Evgeniy
27.02.2018
13:59:03
Я картинку даже нарисовал!

Vasily
27.02.2018
13:59:25
@gsomix это работает немного по-другому же

Friedrich
27.02.2018
13:59:38
Да не, погодите, вроде как надо работает.

Значит, то, что я навыдумывал, не требуется.

Evgeniy
27.02.2018
13:59:58
@gsomix это работает немного по-другому же
Нет, StringReader читает строку из файла и сохраняет в виде литерала.

Я вон потом эту строку передаю в JsonProvider!

Vasily
27.02.2018
14:00:19
Тогда это в другой сборке должно быть, не?

Или там последовательная компиляция норм работает?

Roman
27.02.2018
14:01:29
Friedrich
27.02.2018
14:01:37
Тогда это в другой сборке должно быть, не?
Это верно только для тайп-провайдера и кода, который его использует. Для нескольких тайп-провайдеров всё норм, как видишь

Vlad
27.02.2018
14:02:29
выше же кидали такое
если ты про резум, то он "универсальный" провайдер sql, вроде как

Roman
27.02.2018
14:03:08
если ты про резум, то он "универсальный" провайдер sql, вроде как
ок, я тебя не понял, надеюсь на beerup объяснишь)

Google
Roman
27.02.2018
14:04:50
я в питере)
ни разу не был в питере, надо будет устроить питерский бирап и поехать

Evgeniy
27.02.2018
14:05:08
@fvnever tl;dr StringReader. Но нужно бы еще починить провайдеры в FSharp.Configuration
@fvnever Вот что надо бы сделать. Почему-то провайдеры из FSharp.Configuration не отдают конфиги в виде литералов. Это несложно поправить, я думаю.

Evgeniy
27.02.2018
14:11:44
Ок, давай запилим ишуй и пофиксим.
Я бы подождал с фиксом.

До тех пор, пока ситуация с провайдерами под неткором окончательно не нормализуется.

Friedrich
27.02.2018
14:12:18
А чо ждать-то?

Эдак она никогда не нормализуется, если мы всё время будем ждать!

Evgeniy
27.02.2018
14:13:12
Как знаешь. Я бы подождал, а потом заодно и под неткор портировал, да на новый TP SDK.

https://github.com/fsprojects/FSharp.Configuration/pull/133

Меня вот это смущает.

Friedrich
27.02.2018
14:14:53
Как знаешь. Я бы подождал, а потом заодно и под неткор портировал, да на новый TP SDK.
Мне кажется, ты тут тактически ошибаешься. Не нужно сразу много задач брать в одну охапку.

Сначала литералы сделаем, потом про неткор подумаем.

Vlad
27.02.2018
14:23:20
А провайдеры сломаны до сих пор? Я думал сайм их починил тогда

Evgeniy
27.02.2018
14:24:41
А провайдеры сломаны до сих пор? Я думал сайм их починил тогда
Насколько я понимаю, а понимаю я очень смутно, мы сейчас ждем обновления компилятора и FCS под неткор. Тогда все автоматически заведется, если провайдер портировали под новый TS SDK. @sergey_tihon, поправишь?

Sergey
27.02.2018
14:26:16
поправлю =) мы ничего не ждем, надо уже брать и портировать, сначало на новый TPSDK а потом неткор

когда лыжи не едут и странные ошибки сомпиляции, то можно меня пнуть, а потом завусти багу в TPSDK проекте если еще нету - и Дон поможет

Evgeniy
27.02.2018
14:27:22
поправлю =) мы ничего не ждем, надо уже брать и портировать, сначало на новый TPSDK а потом неткор
У меня, наверное, все смешалось. Я слышал, что генеративные провайдеры все еще требуют какого-то хака.

Хорошо, спасибо!

Sergey
27.02.2018
14:27:42
но хак есть и он должен работать)

Google
Evgeniy
27.02.2018
16:50:50
https://github.com/fable-compiler/fable-react/pull/65

Roman
27.02.2018
16:57:20
https://github.com/fable-compiler/fable-react/pull/65
А вот и решение! @fvnever

Vladimir
27.02.2018
19:00:24
А подскажите плиз, правильно я понимаю что к явно параметризованной функции типа let myfunc<'T> param = ... нельзя применять каррирование?

Vladimir
27.02.2018
19:04:51
если написать let x = myfunc 'abc', то вместо 'T подставляется obj автоматом

Klei
27.02.2018
19:05:18
Каррировать можно. Просто вывод типов работает иначе.

Vladimir
27.02.2018
19:07:04
так а как мне прокаррировать чтобы из myfunc получить myfunc2 с уже подставленным param?

Klei
27.02.2018
19:08:09
let x p = myfunc 'abc' p?

Если я правильно помню, то должно подойти, если нет, то пойду перечитывать.

Vladimir
27.02.2018
19:09:50
не понял)

Klei
27.02.2018
19:10:18
Оно работает?

Evgeniy
27.02.2018
19:10:18
Vladimir Можно пример чуть подробнее? :)

Vladimir
27.02.2018
19:10:59
да, вот функция let inline myFunction<'T> (localizer: IStringLocalizer) = Enum.GetValues(typeof<'T>):?> 'T[] |> Array.map (fun v -> { Key = v ; Value = localizer.[v.ToString()].Value })

я сейчас ее вызываю через myFunction<MyEnum> localizer

но у меня кучу энамов и приходится постоянно дописывать локалайзер

хотелось бы сделать myFunction2<'T> в которую прокаррирован уже этот общий для всех локалайзер

Оно работает?
копипаст не сработал)

Klei
27.02.2018
19:14:43
Тут получается не функция. А проп какой-то.

Aleksander
27.02.2018
19:15:21
А если юнит параметр добавить?

Google
Klei
27.02.2018
19:15:26
Вариант с добавлением unit в конце новой функции подойдет?

Evgeniy
27.02.2018
19:16:26
Vladimir let x<'T> = myfunc<'T> "abc" ?

Vladimir
27.02.2018
19:16:27
может подойдет, только я не очень понимаю что именно добавить)

Klei
27.02.2018
19:16:56
let x () = myFunc localizer

Vladimir
27.02.2018
19:17:03
Vladimir let x<'T> = myfunc<'T> "abc" ?
да, это был мой план) но не компилится

Klei
27.02.2018
19:17:08
Вроде так.

Fill
27.02.2018
19:17:44
let x (y: unit)

Evgeniy
27.02.2018
19:17:55
Vladimir
27.02.2018
19:18:16
let x () = myFunc localizer
о, так компилится)

Klei
27.02.2018
19:18:45
Какая ошибка?
x в этом случае является статическим пропом. Оно не может быть реализовано не в дженерик типе.

Можно извернуться со статическим классом конечно.

Evgeniy
27.02.2018
19:19:16
Вы мне ошибку скажите. :)

Vladimir
27.02.2018
19:19:19
Какая ошибка?
Explicit type parameters may only be used on module or member bindings

Klei
27.02.2018
19:20:02
type 'a X = static member x = myFunction<'a> localizer

Попробуй чисто ради эксперимента.

Evgeniy
27.02.2018
19:20:16
Explicit type parameters may only be used on module or member bindings
А где ты эту функцию объявляешь?

Vladimir
27.02.2018
19:20:48
внутри другой функции, сразу после того как локалайзер проинициализировал

Evgeniy
27.02.2018
19:21:04
А, тогда понятно. :)

Klei
27.02.2018
19:22:01

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