
Artemy
05.04.2018
14:48:15
Ну т.е.
type MyClass() as this = ...
https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/classes#self-identifiers

Klei
05.04.2018
15:06:46

??
05.04.2018
15:11:55
оо, тоже проперти
Контрастная подсветка или наведение курсора всегда подскажет что получится. Мне бы вот понять как обернуть структуру, чтобы как в рекордах через with вставлять изменения. Оператор неявного преобразования?

Google

Artemy
05.04.2018
15:12:19
@Kleidemos а в каких тогда случаях нужен (обязателен) "само-идентификатор" на уровне типа? А то я что-то и не припоминаю

Klei
05.04.2018
15:14:01

Artemy
05.04.2018
15:14:59
А, ну да, логично, спасибо
Ну тогда я и не знаю, что неправильно в вышеприведённом примере

Roman
05.04.2018
15:17:17

Klei
05.04.2018
15:18:46

Roman
05.04.2018
15:18:48

Владислав
05.04.2018
15:19:34

Roman
05.04.2018
15:19:49
попробуй this привести к IRepository

Evgeniy
05.04.2018
15:19:51

Roman
05.04.2018
15:20:09
и потом у него уже вызвать Delete

Klei
05.04.2018
15:20:11

Roman
05.04.2018
15:20:20

Google

Roman
05.04.2018
15:20:22
?

Владислав
05.04.2018
15:20:31
Сори, уже отошёл от компа
Но спасибо!

Klei
05.04.2018
15:20:49

Artemy
05.04.2018
15:21:20
Была проблема

Roman
05.04.2018
15:22:12
Зато я параллельно зарадил следующие вопросы:
Как нужно приводить тип к типу?
Почему нужно именно так?
Сразу возникает вопрос "почему так не красиво"?
А потом приходит понимание насколько это круто

Artemy
05.04.2018
15:22:22
Вообще, такая себе необходимость. Неплохо бы это было подправить, наверное. Но это не точно, т.к. я не эксперт. :) Вероятно, есть у такого подхода плюсы

Roman
05.04.2018
15:22:38
в итоге ты перестаешь передвать class,

Artemy
05.04.2018
15:23:08
Не смешивается всё в кучу? В том же автокомплите всегда ясно, где чьи методы?

Roman
05.04.2018
15:23:29
в методы\функции, а передаешь Интерфейсы, язык подталкивает к прогрммироаванию на интерфейсах
т.е. даже ооп у F# лучше чем у C#

Klei
05.04.2018
15:24:27
Пока не вернут protected, однозначного знака не будет.

Roman
05.04.2018
15:24:43
нуок(

??
05.04.2018
15:26:19

Artemy
05.04.2018
15:26:41
Наверное, простому обывателю это всё может показаться недостатком, на первый взгляд. А о вышеприведённом преимуществе не каждый задумается

Roman
05.04.2018
15:26:56

??
05.04.2018
15:27:30
как?
Хранить ссылки как интерфейсы, например

Google

Klei
05.04.2018
15:27:43

Evgeniy
05.04.2018
15:28:17

??
05.04.2018
15:28:20
(this as IRepositry<T>).Delete

Klei
05.04.2018
15:28:44
Это может быть необходимо при явной имплементации интерфейса.

??
05.04.2018
15:28:50

Roman
05.04.2018
15:29:31
У F# более строгий вывод типов. так что тут это необходимость, в C# - шанс отстрелить ногу
ну не ногу, но мизинчик поранить)

Evgeniy
05.04.2018
15:31:42

??
05.04.2018
15:32:02

Roman
05.04.2018
15:34:17
Пример кода, пожалуйста. Я плохо представляю.
interface ILog { void Log(object) };
interface ILogger {void Log(object)};
class LoggerLog : ILog, ILogger {
public void ILog.Log(object o) => Console.WriteLine("Log"):
public void ILogger.Log(object o) => Console.WriteLine("Logger"):
}

??
05.04.2018
15:34:58

Roman
05.04.2018
15:35:26
Ты знаешь, что знание C# тут не моде? ?

??
05.04.2018
15:36:26

Roman
05.04.2018
15:36:57
Я больше про себя)

Artemy
05.04.2018
15:37:20

Roman
05.04.2018
15:37:31

Artemy
05.04.2018
15:37:58
Математика засоряется приведениями типов

Roman
05.04.2018
15:38:21
есть немного

Artemy
05.04.2018
15:38:38
Ну и по-быстрому скриптик набросать посложнее получается

Google

Artemy
05.04.2018
15:39:09
В принципе, в Хаскелле похожая проблема

Roman
05.04.2018
15:39:18
мне казлось что нет

??
05.04.2018
15:39:54
На числах всё же подбешивает немного
Вот тут вопрос, что эффективнее использовать для числового ключа карты, если значений не очень много, например, не будет ли byte/uint16 конвертиться внутри логики поиска в тот же int?

Artemy
05.04.2018
15:40:00
Ну там, насколько вспоминаю, приходилось-таки что-то приводить. Хотя засчёт тайпклассов, вроде, попроще, чем в F#

Roman
05.04.2018
15:40:48
здесь я думаю тоже проблем не должно быть перегрузить операторы, не?

Evgeniy
05.04.2018
16:08:23
Спасибо.

Vasily
05.04.2018
16:34:45
Я сегодня себе мозг сломал. Накидайте идей по десериализации объекта произвольного типа

Roman
05.04.2018
16:38:34
Используй animate.css
ты о каких идеях?

Vasily
05.04.2018
16:44:42
Да я все хочу написать какой-то билдер, который будет представлять граф сериализации и десериализации объекта
Точнее, два билдера

Roman
05.04.2018
16:45:10
А что в этом графе будет?

Vasily
05.04.2018
16:45:40
Но чтобы билдеры не знали, куда и как, а просто имели информацию о типе
В графе фактически последовательность записи/чтения типа

Roman
05.04.2018
17:07:09

Vasily
05.04.2018
17:29:46
О рефлексии думал, но пока неясно, поможет ли это задачу решить
В целом, квотейшны могут помочь для скрытия информации о типе
Потому как если врайтер можно спрятать за 'ctx->unit,то с ридером надо что - то думать
Ибо 'ctx->'a

Google

Vasily
05.04.2018
17:33:47
Ну и чтение на конкретные типы завязано

Daniel
05.04.2018
17:34:51
Можно портировать в слоты и читать/писать в них. Как-то раз хотел сделать https://m.habrahabr.ru/post/229035/

Igor
05.04.2018
17:38:46
ну для начала могу предложить пример из кое-какой книги:
если что, книга об AspNetCore

Vasily
05.04.2018
17:55:00
Данный пример тут не особо поможет, к сожалению
В целом, статья на Хабре навела на определённые размышления, проблема только в том, что там подход основан на erased types,похоже
И можно в рантайме один тип другим подменить

Vlad
05.04.2018
17:58:45

Evgeniy
05.04.2018
18:00:55

Igor
05.04.2018
18:03:32
А что за книга
хмм... а я так сразу не скажу. Книжке вроде 2-3 года, она писалась еще на первый .Net Core, примеры там на C#

Vasily
05.04.2018
18:07:15
Смотрел FsPickler?
Угу, в целом похоже на то, что хочется, так что, может, в итоге его заюзаю

Evgeniy
05.04.2018
18:08:23
Там есть пример с сериализацией в Json.
https://github.com/eiriktsarpalis/TypeShape/blob/master/samples/json-serializer.fsx
И еще презентация про реализацию библиотеки. Existential types, rank-n polymorphism. Все то, чего нет в F#. %)
https://eiriktsarpalis.github.io/typeshape/
@vshapenko Видел же?

Vasily
05.04.2018
18:13:25
Ну вот про existential types пока не видел
Вопрос, кстати - что это за грязный трюк?https://github.com/eiriktsarpalis/TypeShape/blob/master/samples/json-serializer.fsx#L254