@Fsharp_chat

Страница 172 из 772
Anton
28.05.2017
15:19:03
ну да ладно, читаю значит дальше книгу =)

Anton
28.05.2017
15:40:54
Какую?
Expert F# 4

Nikolay
28.05.2017
16:12:58
Я в глаза долблюсь, или как

Google
Nikolay
28.05.2017
16:13:02
{"y":{},"z":["xyz","zyx"]}

Что не так с этим JSON?

Unexpected end when deserializing object.

Friedrich
28.05.2017
16:14:18
С этим JSON всё в порядке.

Aleksander
28.05.2017
16:16:40
Каких-нибудь невидимых символов в конце нет?

Nikolay
28.05.2017
16:18:41
Хотя эта библиотека всё равно не умеет DU конвертить

А в F# наследования записей нет?

Vagif
28.05.2017
17:56:41
Нет

Igor
28.05.2017
17:59:46
А в F# наследования записей нет?
За такие вопросы у нас во дворе... ?

Nikolay
28.05.2017
18:45:38
Ну типа если есть 20 записей, и у них 4 поля повторяются, нужно для каждой прописывать?

Roman
28.05.2017
18:48:57
Можно использовать вложенные записи - выносите общие поля в тип (если они логически объединены) и радуетесь. Или обычные классы

Igor
28.05.2017
20:38:09
Обычно используют camelCase и добавляют I. Но когда ты один, ты можешь не делать(но по моему стоит)
OK, в общем решил “не лезть в бутылку”, буду делать по стандартным стаилгайдам.

Как в F# проверить что что-то НЕ равно null, без паттернматчинга? На X <> null компилятор ругается, что устарело.

Google
Nikolay
28.05.2017
21:03:52
Наверное так

Funogram уже наверное больше 2к строк

Записи для инлайн режима в 500 строк вышли ?

Igor
28.05.2017
21:07:30
not isNull(X)
Странно у меня vscode как раз на этот код ругался (по этому и пришел с вопросом).

Nikolay
28.05.2017
21:07:58
if not (isNull X) then

Вот так надо

Roman
28.05.2017
21:08:57
Igor
28.05.2017
21:08:58
Лучше не шути про бутылку
Здесь люди интилигентные

Roman
28.05.2017
21:09:30
Отсутсвие тайппровайдеров
Мб простотпофиксить тацппровпйдер для .net core?

Nikolay
28.05.2017
21:09:50
Roman
28.05.2017
21:10:02
Igor
28.05.2017
21:12:06
Мб простотпофиксить тацппровпйдер для .net core?
Если это так легко, почему ещё не пофиксили?

Roman
28.05.2017
21:12:32
Ура! Я посмотрел "болл он хилл!"

Если это так легко, почему ещё не пофиксили?
Я не знаю как фиксить, но из разговоров тут, я так понял надо убрать Emit метод

Nikolay
28.05.2017
21:13:35
Не понял
https://github.com/Microsoft/visualfsharp/issues/1496#issuecomment-244315047

Вот их ответ

Короче, я думаю ещё долго их ждать

Google
Roman
28.05.2017
21:17:12
https://github.com/Microsoft/visualfsharp/issues/1496#issuecomment-244315047
Спасибо. А мб тогда сделать на .net standard 2 Alfa/beta?

Igor
28.05.2017
21:17:55
Ура! Я посмотрел "болл он хилл!"
А Марка Симана (у него вроде оригинал болонхил)? https://youtu.be/US8QG9I1XW0 https://youtu.be/cxs7oLGrxQ4 https://youtu.be/Ux5wUSOsEfc

Nikolay
28.05.2017
21:18:08
Спасибо. А мб тогда сделать на .net standard 2 Alfa/beta?
re-architect the fundamental F# compiler API used by type providers to no longer use any F# quotations or any extensible reflection (inheriting from Type/MethodInfo/FieldInfo/... types). While this would be architecturally cleaner and more independent in many ways, it is also a big undertaking, and would require significant corresponding changes to the ProvidedTypes programming model for authoring type providers. This model uses extensible reflection in many places, e.g. here and here

Они пока сейчас это допилят, потом пока перепишут тайп провайдеры, потом пока пофиксят баги, пройдёт год)

Nikolay
28.05.2017
21:23:27
Но я могу ошибаться :)

.Net Core развивается и быстро и в то же время медленно :)

Летучая
28.05.2017
21:27:03
if not (isNull X) then
if x |> isNull |> not then

Nikolay
28.05.2017
21:27:52
if x |> isNull |> not then
У меня короче :)

Это тот момент, когда короче - круче ?

Летучая
28.05.2017
21:29:03
let notNull x = x |> isNull |> not if notNull x then

Шах и мат

Nikolay
28.05.2017
21:29:37
Или теперь добавь это в стандартную библиотеку :)

Летучая
28.05.2017
21:30:11
[AutoOpen] module Tools

Nikolay
28.05.2017
21:30:38
if x <> null then

Шах и мат :)

k0balt
28.05.2017
21:31:00
Не. Тот который в issue с видео
А можно ссылочку? Так часто тут упоминают, что заинтриговали

Nikolay
28.05.2017
21:32:03
Правда, не знаю зачем они так усложнили, типа функциональнее что-ли

Google
Roman
28.05.2017
21:32:46
Friedrich
29.05.2017
04:34:56
let notNull x = x |> isNull |> not if notNull x then
Даёшь (почти) point-free: let notNull x = (not << isNull) x

Да и то, там переменную пришлось вводить из-за того, что резко приключился monomorphism restriction :(

Жалко, что в CLI нельзя делать generic-полей.

Evgeniy
29.05.2017
05:14:37
@fvnever А хочется? Для чего?

Friedrich
29.05.2017
05:15:08
@fvnever А хочется? Для чего?
Я хотел написать так: let notNull = not << isNull

Без этой фишечки жить, безусловно, можно. Это не то чтобы очень большое преимущество :)

Evgeniy
29.05.2017
05:17:10
@fvnever Я про реализацию. Как бы это выглядело с generic-полями?

Friedrich
29.05.2017
05:18:25
Буквально вот так и выглядело бы. Я бы хотел, чтобы let notNull = not << isNull компилировалось в генерик-поле или генерик-переменную (которую можно всё равно свести к генерик-полю) типа FSharpFunc<T, bool> where T : class.

Впрочем, меня бы устроило, если бы оно компилировалось и как let notNull x = (not << isNull) x, но это несколько частное решение.

Буквально вот так и выглядело бы. Я бы хотел, чтобы let notNull = not << isNull компилировалось в генерик-поле или генерик-переменную (которую можно всё равно свести к генерик-полю) типа FSharpFunc<T, bool> where T : class.
Это можно было бы устроить, кстати, генерируя генерик-классы или структуры (типа тех, что используются для замыканий). Но я боюсь, что это будет весьма комплексной доработкой для очень узкого ряда частных случаев, и потому никто такой RFC не одобрит :(

Pawel
29.05.2017
05:27:47
Я бы не стал использовать System.IO.BinaryFormatter для таких зажач, где размер имеет значение. Скорее даже вообще не стал бы использовать его в качестве сериализатора. Используй ASN.1, Protobuf, FsPickler

Friedrich
29.05.2017
05:29:08
Как в F# проверить что что-то НЕ равно null, без паттернматчинга? На X <> null компилятор ругается, что устарело.
Наткнулся на информацию о том, почему компилятор ругается. Смотри: https://stackoverflow.com/a/6818329/2684760 TLDR: операторы сравнения работают через HashCompare.GenericEqualityIntrinsic<T>, и это значительно медленнее, чем какой-нибудь Object.ReferenceEquals. Вероятно, isNull использует быструю реализацию, и поэтому рекомендуется к применению.

Nikolay
29.05.2017
05:37:43
obj.ReferenceEquals(x, null)
Это сравнивание по ссылке

Pawel
29.05.2017
05:38:06
Friedrich
29.05.2017
05:38:17
Это сравнивание по ссылке
Но оно же и нужно. С null только по ссылке и сравнишь :)

Google
Pawel
29.05.2017
05:43:05
В любом случае. Структуры данных F# (рекорды, DU, списки, мапы, множества и т.п.) не могут быть null, как и структуры net. null - это только boxed объекты, и они представляют из себя ссылки, а не значения.

Хотя если получить десериализованный объект из какой-нибудь глуповатой json.net, то он запросто будет null

если был сериализован не так, как ей надо

Pawel
29.05.2017
06:13:35
Там размер не большой. Все в порядке
Я на случай, если кто-то прочёт и захочет воспроизвести твой опыт - чтобы не зыбыл включить женскую логику при необходимости

ну и в общем случае ASN.1 - гостированный язык описания данных, и по умолчанию надо брать всегда его

Pawel
29.05.2017
06:29:59
https://ru.wikipedia.org/wiki/ASN.1

Evgeniy
29.05.2017
06:47:30
https://github.com/Microsoft/visualfsharp/pull/3116

Смотрите ка, JetBrains подключились контрибьютить в visualfsharp.

Pawel
29.05.2017
06:52:53
О, они этим славтся. Уже mono починили по ходу пьесы, исправили там пачку хардкорных багов

Anton
29.05.2017
07:29:59
@nevoroman очень вдохновился твоим выступлением про data science. Ты там упоминал о том, что использовал sqlProvider в качестве "ORM" через либу написанную на F#, подключая её в C#. А такой вопрос - у меня вот есть mongoDB. Там, как я понял, BsonProvider я смогу использовать как ORM для монги ? Нашел вот такую статью, но не совсем понял смысл. https://www.mongodb.com/blog/post/enhancing-the-f-developer-experience-with-mongodb

Vasily
29.05.2017
07:31:21
Кстати, по поводу сериализаторов. Есть еще https://github.com/ServiceStack/ServiceStack.Text

Evgeniy
29.05.2017
07:43:23
@the_RAMZAY А BsonProvider умеет подключаться к Mongo?

Anton
29.05.2017
07:43:40
@gsomix вот этого я не знаю.

точно знаю, что к bson файлам может =)

http://visemet.github.io/FSharp.Data.Bson/library/BsonProvider.html

Evgeniy
29.05.2017
07:44:27
Да, только обычные bson файлы умеет.

Evgeniy
29.05.2017
07:45:22
Это древняя статья.

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