
Andrew
01.07.2017
21:14:56
Однако в этом пакеты были ошибки.

Igor
01.07.2017
21:15:54
Это же не просто сериалзитор, а целая надстройка над rabbit?

Andrew
01.07.2017
21:16:46
Да, смысл в том, чтобы вызывать удаленные методы. Как WCF
К F# это конечно отношения не имеет ))..

Google

Ivan
01.07.2017
21:17:33
В принципе сейчас в продакшене RabbitLink - творчество моего друга. Но он меняет апи слегка. Хотя 2 года - полет нормальный

Igor
01.07.2017
21:19:57
Блин, почему все так сложно на коре, акторов нет, официальной сериализации нет ?

Ivan
01.07.2017
21:21:22
Бинарная сериализация .net не очень удачная. Акторы можно запилить на async data blocks.
Если без распределенности
А так акторы пока ни у кого кроме OTP внятные не получились. Все же обе Akka слегка не тянут по кластеризации

Vagif
01.07.2017
21:25:06
С сериализацией F# хорошо справляется Fsharplu. Пользуемся ею с RabbitMQ.

Igor
01.07.2017
21:27:21
Как я и думал, поддержи core clr в Fsharplu нет

Ivan
01.07.2017
21:29:39

Igor
01.07.2017
21:30:31
Так понятнее?

Ivan
01.07.2017
21:33:09
Мы гоняем смесью протобуфера и json от типа канала зависимо. Я то же сначала очень переживал по поводу универсальной сериализации. Но можно вполне внятно разрулить по свойству заголовка RabbitMq Type
To Vagif Abilov: У вас базовые разработчики сразу были на F#, или переучивал
?

Vagif
01.07.2017
22:02:03
Были энтузиасты, но без опыта работы в проектах.

Google

Vagif
01.07.2017
22:02:39
Attitude важнее опыта, имхо.

Ivan
01.07.2017
22:03:58
Сам учил?
Если есть опыт переучивания C# -> F# рассказал бы - это будет очень полезно

Vagif
01.07.2017
22:04:59
Ну да.

Ivan
01.07.2017
22:07:09
Я сталкиваюсь уже с тем что многие сильные c#писты и на нем пытаются функционалить подсознательно. Но вот как их учить - опыта нет

Vagif
01.07.2017
22:09:51
Имхо, человек должен дойти до осознания, что C# уже не устраивает. Без этого не получится. А с этим само пойдёт

Ivan
01.07.2017
22:11:46
да доходят - но боятся. Мейнстрим терять -монады - сложно - я и сам то от безысходности. Как расказать правильно - дать направление, куда копать
Кстати заметил - на C# коммиты часто - на F# редко, но большие. Видимо все же писать и думать сложнее ?

Vagif
01.07.2017
22:30:16
Про монады вообще не надо думать, приступая к функциональным языкам.
А то, что коммитят реже - на F# порой больше усилий надо потратить, чтобы скомпилировалось. Зато потом сразу работает ?

Ivan
01.07.2017
22:32:21
Тогда сложно оценить преимущества.. Они растут на интуитивном ощущении монадного принципа. Когда наконец понимание обещанного вычисления входит в спинной мозг..

Ed
02.07.2017
05:02:16
а не занимают ли forge 2.0 и dotnet одну и ту же нишу?

Evgeniy
02.07.2017
05:18:09

Igor
02.07.2017
07:45:13

Pawel
02.07.2017
08:03:33

Kirill
02.07.2017
09:25:15
а у него есть core?

Pawel
02.07.2017
09:26:41
не кором единым... Fsharplu тоже нет если что

Kirill
02.07.2017
09:27:12
был случай, когда newtonsoft.json не смог сериализовать мне деревья и я использовал fspickler, с задачей он справился, но десериализовывать в другом месте тоже пришлось им же, что печально
и, на мой взгляд, было много лишней возни со стримами

Igor
02.07.2017
09:30:48
Кстати в C# чатике посоветовали Json c TypeNameHandling = TypeNameHandling.Objects
https://dotnetfiddle.net/Lm8Tb6
Но в итоге для MQ пока остановился на EasyNetQ, он вроде и под кор умеет и сам сериализует (версия там правда превьюшная)

Google

Pawel
02.07.2017
09:32:10
странно было бы ожидать от другой библиотеки чтобы она умела в fspickler.

Kirill
02.07.2017
09:33:36
с одной стороны была утилита на f#, с другой сервер на коре, пришлось шаманить с версиями, а типы и там, и там были из CLR

Nikolay
02.07.2017
10:36:20
Как сделать downcast из obj в Option<obj>?
match x with
| :? Option<obj> as o -> ...
| _ -> ...
Так не работает, всегда срабатывает второй кейс

Evgeniy
02.07.2017
10:42:01
@Dolfik
https://stackoverflow.com/questions/6289761/how-to-downcast-from-obj-to-optionobj

Nikolay
02.07.2017
10:42:19

Evgeniy
02.07.2017
10:42:42

Nikolay
02.07.2017
10:44:04
Там возвращается само значение, типа obj, а мне нужно Option<obj> получить

Evgeniy
02.07.2017
10:58:02
@Dolfik Там вроде несложно поправить, чтобы он возвращал тебе Option<obj>.

Nikolay
02.07.2017
10:58:24
Ну я сделал уже чутка по другому

Evgeniy
02.07.2017
10:58:27
Буквально active pattern заменить на функцию.
@Dolfik А что за задача такая?

Nikolay
02.07.2017
11:00:06
У меня там список box объектов, в них могут быть как обычные объекты, так и Option Some/None, и нужно выбрать все обычные объекты + Option Some

Evgeniy
02.07.2017
11:00:21
Звучит страшно.

Nikolay
02.07.2017
11:02:14
:)

Klei
02.07.2017
12:10:48
Как сделать downcast из obj в Option<obj>?
> 2 |> box |> Some |> box |> unbox<Option<obj>>;;
val it : Option<obj> = Some 2
> 2 |> box |> Some |> box |> tryUnbox<Option<obj>>;;
val it : Option<obj> option = Some (Some 2)

Evgeniy
02.07.2017
12:24:20

Google

Evgeniy
02.07.2017
12:33:25
Постоянно путаюсь в этих ко- и контрвариациях. =__=

Klei
02.07.2017
12:39:55

Evgeniy
02.07.2017
12:44:07

Klei
02.07.2017
12:53:25

Evgeniy
02.07.2017
12:54:07

Klei
02.07.2017
12:55:15
Вроде в Language.Ext реализация была через интерфейсы с соответствующим допуском.

Evgeniy
02.07.2017
12:58:00
Я такого кейса там не вижу.
Я к тому, что с 2 |> box |> Some |> box такой match-блок работает. А у @Dolfik с его объектами не работает, значит там что-то другое.

Klei
02.07.2017
13:01:00
Разные, но ковариантные, разве нет?
Если возникают проблемы с практическим пониманием, то достаточно вспонить ограничения налагаемые для интерфейсов. Раз Option в F# это не только экземпляры, но еще и модуль, значит в типе присутствует T и как результат и как аргумент. Т.е. подобный каст невозможнен.

Evgeniy
02.07.2017
13:02:29

Ivan
02.07.2017
14:33:46
Можно ли на FSharp сделать так, чтобы скрость сохранить скорость тасков

Ed
02.07.2017
14:48:15
А мне нравиться как в Элме сделали с сериализацией и десериализацией. Я даже тоже самое использую в своём ФШарп коде

Pawel
02.07.2017
14:50:00

Ed
02.07.2017
14:51:02
ну давай без оценок. То что ты плачешь - этого достаточно :)

Friedrich
02.07.2017
14:51:39
А как там сделано?
Заинтриговали!

Ed
02.07.2017
14:52:10
http://package.elm-lang.org/packages/elm-lang/core/5.1.1/Json-Decode

Google

Ed
02.07.2017
14:52:17
http://package.elm-lang.org/packages/elm-lang/core/5.1.1/Json-Encode
короче как с парсером
очень увлекательно комбинировать

Friedrich
02.07.2017
14:53:55
Ага, вот мануал: https://guide.elm-lang.org/interop/json.html

Ed
02.07.2017
14:54:13
да

Friedrich
02.07.2017
14:54:14
Для каждого типа чтоли нужно отдельно писать сериализатор?

Pawel
02.07.2017
14:54:31

Ed
02.07.2017
14:54:38
примитивы все написаны до нас
и не только

Friedrich
02.07.2017
14:54:48
Ок, я понял, почему Павел плачет. Присоединяюсь к нему. В Scala/play так же сделано, и я этим также опечален.

Ed
02.07.2017
14:55:00
и дикшнари и листы и кейвелью списки

Pawel
02.07.2017
14:55:04
вот как это выглядит на практике. Увлекателноо - капец как https://github.com/fpawel/gobet-front/blob/master/src/Data/Football.elm#L148

Friedrich
02.07.2017
14:55:49
Я какой-то F#-сериализатор такой же видел, кстати. Уж не Arachne ли это?

Ed
02.07.2017
14:56:08
зато декодер может декодировать одну структуро в совершенно другую

Friedrich
02.07.2017
14:56:10
И она тоже не зашла, кароч. Я бы хотел бизнес-код писать, а не десериализаторы бойлерплейтить

Pawel
02.07.2017
14:56:45

Ed
02.07.2017
14:56:48
я даже так же делаю с HTTP респонсами - даю просто декодер

Vasily
02.07.2017
14:57:39
Сериализация,в общем-то, это отдельная боль

Pawel
02.07.2017
14:58:48