@Fsharp_chat

Страница 719 из 772
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
Это да, я до этого говорил про функциональшину в целом
Так как это коррелирует с тем "зачем нужен ваш фш"?)

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

Ayrat
18.09.2018
11:23:27
А вот, что касается практики в f#, все очень грустно с совместимостью c c#
Ты пробовал Котлин с Джавой совмещать? или Скалу с Джавой?

Я щас говна накину на этот вентилятор

Ivan
18.09.2018
11:24:01
Всякие травёрсабл дата типы у нас не сделаешь чтобы на изичах сделать Async<Option<T>> -> Option<Async<T>>
Я бы нигде подобное делать не рекомендовал. Все ж это невозможно на практике.

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

Pavel
18.09.2018
11:24:30
А вот, что касается практики в f#, все очень грустно с совместимостью c c#
весь нугет совмещается только у вас датское королество

Roman
18.09.2018
11:24:33
так это не он
Но там было "тоже понять не могу"

Ayrat
18.09.2018
11:25:16
Я бы нигде подобное делать не рекомендовал. Все ж это невозможно на практике.
Я не про эти конкретно типы, но в целом траверсабл типы есть и ОЧЕНЬ РЕДКО пригождаются. Но я тоже бы не стал ради такого редкого случая городить эту хреноту в коде

Roman
18.09.2018
11:25:18
А вот, что касается практики в f#, все очень грустно с совместимостью c c#
Нормально там все) Чего не совмещается? В какую сторону? Давай поможем)

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
Ну так в том, то и проблема, что это слишком накладно

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

Ayrat
18.09.2018
11:29:17
Ты можешь посреди проекта втиснуть фи-шарп код? Нет, пили отдельный проект. (С котлином так можно). Это усложняет внедрение.
Аргумент очень плохой. Вообще не аргумент так-то. Это так дотнетая система сборок работает, а не F# или C#

И была бы проблема в разных проектах, не понимаю

Bonart
18.09.2018
11:31:16
Аргумент очень плохой. Вообще не аргумент так-то. Это так дотнетая система сборок работает, а не F# или C#
Агрумент сам по себе не плохой, но из серии "ты виноват уж тем что хочется мне кушать".

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

Pavel
18.09.2018
11:38:32
Аргумент очень плохой. Вообще не аргумент так-то. Это так дотнетая система сборок работает, а не F# или C#
На самом деле, в одной сборке могут быть модули написанные на разных языка, CLR позволяет это. Консольные тулы это позволяют, но нет поддержки со стороны вижлы, сдк.

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

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
Grigoriy
18.09.2018
14:52:49
Привет!

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

Pavel
18.09.2018
15:15:12
query?

Klei
18.09.2018
15:27:56
а вот в линке вроде был
Покажи. Я такого не помню.

Можно псевдокодом.

Ayrat
18.09.2018
15:30:21
Покажи. Я такого не помню.
не я прогнал, zip там как и у нас, до первой закончившейся коллекции зипует

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
не я прогнал, zip там как и у нас, до первой закончившейся коллекции зипует
Покажи как выглядил бы метод в либе. Ибо тут надо 1) взять ключ, 2) смержить два экземпляра.

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

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

Grigoriy
18.09.2018
15:33:41
И фолдим в мап
groupBy guid + map в сумму?

Vasily
18.09.2018
15:34:01
Ну можно и так, кстати

Но лучше одним проходом

С группировкой будет два

Ayrat
18.09.2018
15:34:54
Я не догнал, коллекции упорядочены?
вот это как раз обычный mergeJoin если они сортированы но в общем случае мы не знаем

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-ы могут повторяться в рамках одной коллекции?

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
Пишу с телефона

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

Roman
18.09.2018
16:04:11
Ayrat
18.09.2018
16:04:21
в вас еще раз query кинуть?
будь так любезен

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
швырнул доками в лицо значит
я ж говорил - есть join :)

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