@Fsharp_chat

Страница 353 из 772
Vasily
09.10.2017
14:49:12
Если внимательно посмотреть на ProvidedTypes.fs, то там квотейшны, да

Nikolay
09.10.2017
14:49:30
Я в квотейшенах не очень

Friedrich
09.10.2017
14:49:34
Но никто не знает, какую функцию они там выполняют!

Nikolay
09.10.2017
14:49:43
Ими можно генерировать реальные типы?

Google
Friedrich
09.10.2017
14:49:56
Нет, это же всего лишь квотейшены.

Nikolay
09.10.2017
14:50:10
Ну точнее типы, которые были бы видны автодополнением

Friedrich
09.10.2017
14:50:37
Ок, чёрт его знает. Кажется, да?

Evgeniy
09.10.2017
14:50:49
Квотейшены не про типы.

Friedrich
09.10.2017
14:50:55
Ну, все эти SQL- и XML-провайдеры же Erased, но они умеют генерировать типы.

Псевдотипы.

Nikolay
09.10.2017
14:51:12
Грубо говоря, можем ли мы сделать имитацию string interpolation на квотейшинах?

Ааа, взрыв мозга

Friedrich
09.10.2017
14:51:44
Ок, я не знаю, как ответить на этот вопрос. Самому интересно.

Nikolay
09.10.2017
14:52:00
Можно в слаке задать вопрос

Vasily
09.10.2017
14:53:50
Кстати, коллеги. А Рослин под net core работает?

Friedrich
09.10.2017
14:53:52
Там никто тоже ничо не знает ?

Google
Evgeniy
09.10.2017
14:54:06
Nikolay
09.10.2017
14:54:12
Как работает автодополнение в Erased провайдерах

Vasily
09.10.2017
14:54:22
Evgeniy
09.10.2017
14:56:26
Nikolay
09.10.2017
14:56:56
А как оно работает в generative?
В Generative генерируется сборка, и данные можно спокойно тащить из метадаты сборки

Vasily
09.10.2017
14:57:23
В erased скорее всего тоже генерится сборка

Но на компиляции типы убиваются

Надо смотреть на obj папку по идее

Evgeniy
09.10.2017
14:58:37
В Generative генерируется сборка, и данные можно спокойно тащить из метадаты сборки
Я думаю, что в erased тот же принцип. Учитывая, что для программиста написание generative и erased провайдеров не сильно отличается.

Nikolay
09.10.2017
14:58:40
Чтобы проклятому C# не досталось? :)

Окей

А почему тогда Erased работают под кором, а Generative - нет?

Evgeniy
09.10.2017
14:59:07
Чтобы проклятому C# не досталось? :)
Erased позволяют "генерировать" более интересные штуки.

Какие-нибудь бесконечные типы.

Nikolay
09.10.2017
14:59:31
Я так и не услышал ответа :)

Evgeniy
09.10.2017
14:59:33
Никакой IL для типов на самом деле в итоге не генерируется.

Nikolay
09.10.2017
14:59:47
Как работает автодополнение в Erased провайдерах

Evgeniy
09.10.2017
14:59:57
Google
Evgeniy
09.10.2017
15:00:01
Здесь никто не знает.

Friedrich
09.10.2017
15:00:06
Nikolay
09.10.2017
15:00:12
Бесполезные

Evgeniy
09.10.2017
15:00:14
Я ничего не знаю.

Friedrich
09.10.2017
15:00:18
В смысле, да, IL не генерируется, но и сборка тоже не генерируется.

Evgeniy
09.10.2017
15:00:31
Мне неинтересно.

Friedrich
09.10.2017
15:00:42
Потому что, чтоб передать сборку компилятору, у нас только один способ: сформировать массив байтиков.

Очевидно, что в Erased этого не делается.

Friedrich
09.10.2017
15:02:14
В теории есть еще один
В теории я и больше могу придумать :)

Vasily
09.10.2017
15:02:22
Можно генерить исходник

И подсовывать его компилятору

Nikolay
09.10.2017
15:02:42
Кто-то говорил, что это работает через Emit, и я бы придерживался этой версии

Но мне интересно, как тогда работает автодополнение

Friedrich
09.10.2017
15:02:59
Давайте сэмплы посмотрим: https://github.com/fsprojects/FSharp.TypeProviders.SDK/blob/master/examples/ErasedWithConstructor.fsx

Nikolay
09.10.2017
15:03:14
Вы смотрите, а я домой пошёл :)

Friedrich
09.10.2017
15:04:54
Ок, я сдаюсь, я ничего там не понял.

Google
Vasily
09.10.2017
15:09:20
А там оч прикольно

Особенно тут : https://github.com/fsprojects/FSharp.TypeProviders.SDK/blob/master/src/ProvidedTypesContext.fs

интересный там трюк

По факту замена типов из одной сборки типами из другой

На компиляции

Условно, метаданные над метаданными

https://github.com/fsprojects/FSharp.TypeProviders.SDK/blob/master/src/ProvidedTypesContext.fs#L149

И вот это интересно : https://github.com/fsprojects/FSharp.TypeProviders.SDK/blob/master/src/ProvidedTypesContext.fs#L252

https://github.com/fsprojects/FSharp.TypeProviders.SDK/blob/master/src/ProvidedTypesContext.fs#L326-L330

Походу, там делается design-time сборка

Через которую идет intellisense

код в целом понятный, но нужно время, чтобы его изучить

Friedrich
09.10.2017
16:56:37
Могу! А на тему? Я давно не читал чат :)
Да мы вроде уже сами разобрались, спасибо :) Прикидываем, как законтрибьютить провайдеры на .NET Core.

Roman
09.10.2017
16:58:46
Ну, нужна будет помощь - пишите. Проще в личку :)

Friedrich
09.10.2017
17:01:31
Ага, спасибо :)

Anna
09.10.2017
17:11:09
Господа. Раз уж я собралась замахнуться на перевод, у меня тут возник несколько глупый вопрос. По-английски я худо-бедно понимаю, но по-русски ничего не читала почти по F#. Я не знаю, какие есть устоявшиеся русские термины для разных понятий и фич (ну тот же Value Restriction я не знаю, как по-русски называют). Я могу попробовать сама это всё придумать, но тогда у тех, кто будет потом читать, вернее всего кровь пойдёт из глаз, а мне будет очень стыдно. Где всё это добро посмотреть? Может, есть хорошие переводы книг на русский (про глоссарий я чот боюсь спрашивать)?

Anna
09.10.2017
17:12:38
я тогда вам надоем :)

Nikolay
09.10.2017
17:12:57
И вообще, я предлагал создать "справочник", но чёт не как-то не заладилось

Google
Anna
09.10.2017
17:13:12
видимо, придётся мне заняться в процессе

Nikolay
09.10.2017
17:13:36
я тогда вам надоем :)
Всё равно не сможешь надоесть так, как я надоел Фридриху

Anna
09.10.2017
17:18:05
есть подозрение, что для этого термина нет русского аналога

Evgeniy
09.10.2017
17:19:12
Вики предлагает самое простое "ограничение на значения".

Можно на этой странице найти по "value restriction". https://ru.wikipedia.org/wiki/Параметрический_полиморфизм

В качестве оффтопа, примерно от этих же авторов есть статья про модули в ML. https://ru.wikipedia.org/wiki/Язык_модулей_ML

Мне очень нравятся обе статьи.

Anna
09.10.2017
17:23:02
Отлично, спасибо!

первая ссылка у меня прямо аж открыта во вкладках, вот я невнимательная

Friedrich
09.10.2017
17:43:29
@Dolfik о, Кевин заинтересовался нашими идеями :)

Nikolay
09.10.2017
17:44:11
Опа, круто :)

Friedrich
09.10.2017
17:45:08
Ну, теперь точно надо будет допиливать прототип до рабочего состояния.

Я, пожалуй, пойду спать, а завтра продолжим.

Roman
09.10.2017
17:52:26
Кстати, я, наверное, тоже могу попробовать че-нить перевести, только не знаю, че актуально и наиболее востребовано

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