@Fsharp_chat

Страница 444 из 772
Andrew
02.01.2018
11:10:01
Дичь воще!

Alex
02.01.2018
21:17:23
Возможно тупой вопрос задаю, но все же, может кто поведает, почему результат следующего кода null а не None ? type T = { Count : int option } let t = { Count = None } t.GetType().GetProperty("Count").GetValue(t);;

Pavel
02.01.2018
21:26:32
http://www.fssnip.net/kL/title/Why-printing-None-prints-null

Google
Alex
02.01.2018
21:40:19
Спасибо за ссылочку, интересный аттрибут, он спецально для Option был создан ?

Вернее флаг, а не сам аттрибут

C msdn - UseNullAsTrueValue -> Permit the use of null as a representation for nullary discriminators in a discriminated union. А nullary discriminators in a discriminated union, так понимаю те, что не содержат после себя, эм, как бы назвать, "секцию" of , где кортеж описывается ?

Evgeniy
03.01.2018
05:55:00
Привет.

Alexander
03.01.2018
08:26:42
Привет

Владислав
03.01.2018
09:35:47
учить F#, когда работаешь на C# приводит к грусти. Использовать не могу, но понимаю насколько он крутой(

Andrew
03.01.2018
09:41:47
Поэтому я хочу придумать опенсурс проект где смогу его заюзать

Владислав
03.01.2018
09:52:29
List.take count inputList

inputList |> List.take count

когда мало операторов

как лучше писать?

Google
Andrew
03.01.2018
09:54:40
inputList |> List.take count
Я бы так писал

Artemy
03.01.2018
09:56:50
Ну если других функций, кроме List.take count, нету, то всё равно. А вообще, |> часто используется, т.к., мол, читать проще — вся цепочка естественным образом слева направо читается.

+ ещё <| и |> имеют низкий приоритет, так что иногда их можно использовать, чтобы от лишней пары скобок избавиться.

Alexander
03.01.2018
14:23:47
У меня тут вопросик назрел. Можно ли использовать XmlProvider из FSharp.Data в .fs файлах, и если можно то как? А то у меня работает только в .fsx и то бе интеллисенса

Alexander
03.01.2018
15:03:55
Щас попробую отпишусь

VIsualStudio ругается на нугет пакеты и на FSharp.Data и FSharp.Data.XMLProvider, а FSharp.TypeProvider вообще не сущуствует

мне кажется что я явно что-то делаю не так

Григорий
03.01.2018
15:26:00
поправочка FSharp.TypeProvider находиться в FSharp.Data

нужно только FSharp.Data скачать, его open FSharp.Data и все

а какие пакеты были скачаны через пакетный менеджер?

Alexander
03.01.2018
15:33:10
я тут поковырялся и он продолжате ругаться но работает

вот такие дела

ругался он на версию .net

Я ещё дополнительно поставил FSharp.Data.XMLProvider после этого он вроде заработал



но

Google
Григорий
03.01.2018
15:36:07
провайдер для JSON, XML, SQL, находятся в FSharp.Data

Alexander
03.01.2018
15:36:25
да я всё это уже перечитал раз 10 точно

и тесты прогнал и в ручную собрал, но вот ругается зараза

но работает

Григорий
03.01.2018
15:38:26
а FSharp.Data.TypeProviders открыт в проекте?

у меня такая же проблема была с SQLProvider как и у вас

Alexander
03.01.2018
15:40:06
не его на всякий установил, только FSharp.Data в проекте

даже на System.Xml.Linq не ссылался как на гите говорят

но вот работает даже с интеллисенсом

а если в VSCode cобирать с вручную собранными библиотеками, то не работате не в какую

Alexander
03.01.2018
15:42:17
да

я просто в основном на дебиане сижу, а на винду перехожу только ради VisualStudio, поэтому не очень рад тому что VSCode с этим не справляется

Содал библиотеку на F#, подключил туда только FSharp.Data и всё вроде заработало, чюдеса и только

Григорий
03.01.2018
15:47:27
я просто в основном на дебиане сижу, а на винду перехожу только ради VisualStudio, поэтому не очень рад тому что VSCode с этим не справляется
))), тоже сижу на линуксе только на Lubuntu, поддержка F# с vim'ом хромает (утекает память, так вроде и не поправили, в EMACS норм все работает). Адектватно средства для работы с F# себя ведут в VisualStudio, но это монстр, кушающий много ресурсов системы, зато работает как надо =)

Alexander
03.01.2018
15:48:26
Да у меня ноут не очень новый и студия добрый кусок оперативы и проца откушивает а если ещё и с хромом то это вообще жуть

Aminion
03.01.2018
19:30:43
Как работать с вложенными монадами? Task<Option> к примеру

Bind/Apply

Google
Igor
03.01.2018
19:44:36
А зачем, это же все равно IO (эффект). Кидай исключение ?

Sergey
03.01.2018
20:20:08
Как работать с вложенными монадами? Task<Option> к примеру
Если мы говорим про f# то это чаще всего будет AsyncResult и тогда это Chessie https://fsprojects.github.io/Chessie/reference/chessie-errorhandling-asyncresult-2.html ав общем случае своя имплементация

Aminion
03.01.2018
20:31:41
увы, захотели реализовать в шарпе, проникнутся фп в проде. То есть, в общем случае создают новую монаду?

генерик решения для M1<M2<T>> нет?

Evgeniy
03.01.2018
20:35:19
генерик решения для M1<M2<T>> нет?
Для этого нужны higher-kinded types.

Aminion
03.01.2018
20:45:04
Не, я не о том чтоб прям тайпкласс писать, хоть бы прост очастные случаи, у меня просто нет идей, как написать байнд к двум вложенным монадам, композя их байнды

А, еще, тут говорили скоро 4.5 фшарп будет, ченжлог есть? Так же говорили, что работают над аналогом тайпклассов, есть новости?

Alex
03.01.2018
20:53:02
Все тут https://github.com/fsharp/fslang-design

Alexander
03.01.2018
22:45:43
Я так понял что библиотеку написанную на F# (.NET Core) нельзя использовать в C# (.NET Framework)?

Или я опять что-то где-то недоглядел

Andrew
03.01.2018
22:47:14
Ну библиотека для .NET Core это .NET Standart библиотека, при определенных условиях совместимости это можно сделать, но насколько я знаю внутренние структуры из F# нельзя засунуть в C#, только поддерживаемые .NET'ом

Поправьте, если ошибся

Alexander
03.01.2018
22:48:41
да сректуры значения не имеют, просто я подключаю библиотеку,не важно к консольному или к вэб формам и проект тут же отказывает компилироваться

вот .NET Standart ещё не пробовал

вин формам*

Alex
03.01.2018
22:54:20
Что за такие внутренние структуры F# ?

Andrew
03.01.2018
22:55:00
Что за такие внутренние структуры F# ?
Ну всякие там единицы измерения, или они каким то образом конвертируются в что то более приемлимое в C#?

Alexander
03.01.2018
22:55:27
и лист в F# это совсем не лист в C#

Google
Alexander
03.01.2018
22:55:59
там специальная библиотека за это отечает, а вот с массивами всё впорядке

Eugene
03.01.2018
22:56:46
Andrew
03.01.2018
22:57:29
Ну вот, я имел ввиду что эта информация за пределами проекта F# никуда не идет

Alex
03.01.2018
22:58:00
Так то по сути все интероперабельно, просто из C# это будет выглядить странно

Eugene
03.01.2018
22:58:01
На самом деле идёт в метаданные сборки, но её видит потом только компилятор F# из других проектов.

Ну, почему же странно.) Всё заменится на честные double или другой соответсвующий тип.

Alex
03.01.2018
22:59:49
Имел ввиду какие нибудь Discreminated unions

Eugene
03.01.2018
23:01:54
Тоже всё во вполне честные типы скомпилируется. Либо иерархия классов (если есть поля в кейсах), либо статичные проперти для кейсов без полей. Ну, и будет навешано куча атрибутов, которые читает компилятор, опять же.

Из C#/VB можно использовать довольно много вещей, но иногда не очень удобно или предсказуемо. Например, в некоторых случаях для let-биндингов в модулях сходу неочевидно, во что они скомпилируются: в статическую property или в метод, если не вникать в правила, которые использует компилятор. В последнем случае есть ещё сложности с тем, чтобы заставить метод принимать tuple, ибо компилятор захочет развернуть его в несколько параметров. В таких случаях публичные API можно писать через member в типах, и проблем быть не должно для всего, что умеют другие языки.

Alex
03.01.2018
23:18:11
А такой вот вопрос: есть 2 репозитория https://github.com/fsharp/fsharp https://github.com/Microsoft/visualfsharp В обоих написано что содержит компилятор, Core library и т.д. Вторая это форк или какая то своя версия, есть разные реализации компиляторов или что ?

Понятно что вторая содержит еще и код для интеграции с вс, но там и другого помимо этого много

Artemy
03.01.2018
23:29:01
F# записи (records) точно можно вызывать из C#, т.к. они преобразуюстя в обычный класс со свойствами. Для обычных полей записи это будут свойства только с get, ну а изменяемым полям записи (которые с ключевым словом mutable) будут соответствовать свойства с get и set.

Только с дополнительными фишками, типа structure equality и ещё чего-то там

Вообще, вот тут удобно смотреть, какой C#-код получается при декомпиляции скомпилированного F#-кода: https://sharplab.io/

Alex
03.01.2018
23:41:48
А если DU выставить наружу как принимаемый тип в некоторой апишке например такой type ChangeRequest = | Register of BusinessForm: BusinessFormType * TaxationSystem: TaxationSystemType | ChangeRegistrationDate of RegistrationDate: DateTime | ChangeTaxationSystem of Year: int * TaxationSystem: TaxationSystemType этот тип подключить в C# проект и через некий апи клиент отправить на апи которое на F# и например Giraffe . В IL они может и выглядят как иерархия классов обычная а вот на сколько знаю, но не уверен, в виде Json выглядят по разному ?

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