
Pavel
18.09.2018
11:20:08
а... т.е. linq`у в с# необучен :)

Ayrat
18.09.2018
11:20:48

Pavel
18.09.2018
11:21:26
какое отношение "теоретичаский мусор" имеет к практике что в c# что в f#?

Ayrat
18.09.2018
11:21:42
Всякие травёрсабл дата типы у нас не сделаешь чтобы на изичах сделать
Async<Option<T>> -> Option<Async<T>>

Google

Pavel
18.09.2018
11:22:10
Это да, я до этого говорил про функциональшину в целом

Roman
18.09.2018
11:22:40

Ayrat
18.09.2018
11:22:56

Pavel
18.09.2018
11:22:56
А вот, что касается практики в f#, все очень грустно с совместимостью c c#

Ayrat
18.09.2018
11:23:27
Я щас говна накину на этот вентилятор

Ivan
18.09.2018
11:24:01

Pavel
18.09.2018
11:24:09
Ну в джаве классы, а у нас зборки

Pavel
18.09.2018
11:24:30

Roman
18.09.2018
11:24:33

Ayrat
18.09.2018
11:25:16

Roman
18.09.2018
11:25:18

Ayrat
18.09.2018
11:26:19
Вот C# плохо с F# кодом дружит, т.к. не умеет в карирование и DU
Обратная дружба (вызывать C# код из F#) тривиальна, даже на уровне опциональных аргументов или params

Google

Pavel
18.09.2018
11:27:10
Ты можешь посреди проекта втиснуть фи-шарп код? Нет, пили отдельный проект. (С котлином так можно). Это усложняет внедрение.

Ayrat
18.09.2018
11:27:25
Но в целом если очень нужно, то можно намазать один модуль фасад для C# где карированные методы превращаются в обычные туплеподобные

Pavel
18.09.2018
11:27:55
Ну так в том, то и проблема, что это слишком накладно

Bonart
18.09.2018
11:27:56

Roman
18.09.2018
11:28:05

Bonart
18.09.2018
11:28:24

Roman
18.09.2018
11:28:48
Или посреди с++ забрать жаву?

Ayrat
18.09.2018
11:29:17
И была бы проблема в разных проектах, не понимаю

Bonart
18.09.2018
11:31:16

Vlad
18.09.2018
11:36:57
https://twitter.com/dsyme/status/1041993367998087170?s=12

Pavel
18.09.2018
11:38:32

Ayrat
18.09.2018
11:38:55
поэтому позволяет

Pavel
18.09.2018
11:38:59
Но я что хочу сказать, дайте мне в C# дата-классы (records c# 8.0?) и discriminated unions, почините c# interactive (досих пор сложно юзать в контексте нет.коре сборок) и я буду счастлив, и все будут счастливи и никому не нужен будет фи-шарп.

Bonart
18.09.2018
11:39:51

Vladimir
18.09.2018
11:40:50

Pavel
18.09.2018
11:42:14
В джава-мире все с ума сходят по котлину, потому что джава кривая и касая как язык, а в дот.нет мире есть очень хороший C#, поэтому f# не так популярен.

Vasily
18.09.2018
11:42:48
ДЛя набросов у нас есть флудилка, есличо

Bonart
18.09.2018
11:43:04

Google

Bonart
18.09.2018
11:43:28
Это не значит, что F# "никому не нужен"

Vasily
18.09.2018
11:44:19
Да норм все.Человек не совсем понимает, чего он хочет, и в принципе доволен текущим положением дел. Ну бывает

Roman
18.09.2018
11:44:58

Pavel
18.09.2018
11:53:09

Grigoriy
18.09.2018
14:52:49
Привет!

Ayrat
18.09.2018
15:05:06
а у нас нет встроенного merge или его аналога?
типа есть две коллекции предположим guid*int разной длины
надо смёржить их по гуиду. При совпадении ключей суммировать значения.
Я понимаю что написать самому можно, но меня каждый раз смущает писать самому если есть в стд либе

Roman
18.09.2018
15:11:04

Klei
18.09.2018
15:11:20

Pavel
18.09.2018
15:15:12
query?

Ayrat
18.09.2018
15:27:19

Klei
18.09.2018
15:27:56
Можно псевдокодом.

Ayrat
18.09.2018
15:30:21

Vasily
18.09.2018
15:30:50
Зиповать тут вряд ли поможет

Grigoriy
18.09.2018
15:31:15

Vasily
18.09.2018
15:31:29
О
Короче

Grigoriy
18.09.2018
15:31:38
а join?

Vasily
18.09.2018
15:31:45
Склеиваем

Ayrat
18.09.2018
15:31:50
А у нас есть джойн?

Google

Vasily
18.09.2018
15:31:57
И фолдим в мап
Прям ваще получится

Grigoriy
18.09.2018
15:32:18
вроде был. в линке

Klei
18.09.2018
15:32:43

Vasily
18.09.2018
15:32:54
В фолд функции проверка на ключ будет, но это терпимо

Klei
18.09.2018
15:33:27
Я не догнал, коллекции упорядочены?

Grigoriy
18.09.2018
15:33:41

Vasily
18.09.2018
15:34:01
Ну можно и так, кстати
Но лучше одним проходом
С группировкой будет два

Ayrat
18.09.2018
15:34:54

Vasily
18.09.2018
15:35:32

Vlad
18.09.2018
15:37:06

Ayrat
18.09.2018
15:37:15
я решил так
делаем сет всех ключей (set) из обеих коллекций (set1, set2)
далее
set
|> Seq.map (fun key ->
match set1.TryFind key, set2.TryFind key with
| Some v1, Some v2 -> key, f v1 v2
| Some v, None
| None, Some v -> key, v
| _ -> failwith "impossibru"
где f функция которая из двух значений делает одно

Vasily
18.09.2018
15:37:29
Да не надо так
Склей два сека
И заполни пустой мап фолдом

Ayrat
18.09.2018
15:38:17
ну это примерно то же самое!

Vasily
18.09.2018
15:38:56
У тебя двойной поиск ключа

Ayrat
18.09.2018
15:39:13
да похер, константный же поиск)

Google

Vasily
18.09.2018
15:39:22
Не заставляй меня писать код

Ayrat
18.09.2018
15:39:24
но внимательно выслушаю твой вариант

Roman
18.09.2018
15:41:31
Можно одновременно интернировать два сека

Ayrat
18.09.2018
15:41:40
не все ключи упорядочиваемы

Roman
18.09.2018
15:42:00

Klei
18.09.2018
15:42:04
Ayrat На что-нибудь наличие двух коллекций? guid-ы могут повторяться в рамках одной коллекции?

Ayrat
18.09.2018
15:42:16

Vasily
18.09.2018
15:43:00
seq{yield!s1
yield! s2} Seq.fold (fun acc (k,v)->if x.ContainsKey k then acc.Add (k,acc.[k]+v) else acc.Add k v) Map.empty

Klei
18.09.2018
15:43:03
Если мы не можем гарантировать, что поторений ключей в рамках коллекции нет, то нам вообще становится без разницы, есть одна коллекция или две.

Vasily
18.09.2018
15:43:11
Пишу с телефона

Ayrat
18.09.2018
15:43:12

Pavel
18.09.2018
16:03:16
в вас еще раз query кинуть?

Roman
18.09.2018
16:04:11

Ayrat
18.09.2018
16:04:21

Pavel
18.09.2018
16:04:53
http://fsprojects.github.io/FSharp.Linq.ComposableQuery/QueryExamples.html

Ayrat
18.09.2018
16:05:07
швырнул доками в лицо значит

Pavel
18.09.2018
16:05:25
Multiple Joins

Ayrat
18.09.2018
16:06:23
что-то в этом есть

Grigoriy
18.09.2018
16:06:33