
Igor
10.09.2017
13:21:40
Важно порядок сохранить.
Это элементы списка, который видит юзер, будет странно если будет пересортироваваться при каждом обновление.
У List есть метод, который может два списка превратить в декартово произведение.
Думаю, можно ли что-то с ним потом сделать умное?

kana
10.09.2017
13:26:34
zip?

Igor
10.09.2017
13:31:09
List.allPairs (для zip нужно что бы у списков были одинаковые размеры).
Ладно, сделал по тупому
firstList
|> List.filter (fun x -> List.forall (fun x2 -> x2.id <> x.id) secondList)

Google

kana
10.09.2017
13:39:06
diffBy :: Eq b => (a -> b) -> [a] -> [a] -> [a]
diffBy f a b = filter (\x -> all (\y -> f x /= f y) b) a
main = print $ diffBy id [1..3] [3..4] -- [1, 2]
ну да, то же самое)
вот так еще можно
или если чуть отрефакторить
вы тут простите, что на хаскеле, я апи шарпа не знаю и репла установленного не имею, но мне кажется, фшарписты поймут хаскелевый код без проблем, благо он почти один к одному. Тем более если у тебя на аватарке лого хаскеля)
еще больше point-free для бога point-free
diffBy :: Eq b => (a -> b) -> [a] -> [a] -> [a]
diffBy f = foldr delete where
delete y = filter ((/= f y) . f)

Friedrich
10.09.2017
14:19:26

Ivan
10.09.2017
14:47:58

Andrew
10.09.2017
14:49:23
Именно
А что в этом плохого-то? И работает проще, и инстансов плодится меньше

Ivan
10.09.2017
14:53:57
С точки зрения чистого кода - ничего. Но сборщик мусора соберет только то что не захвачено. А прдствь себе ситуацию с огрмной каритинкой, котороая потом не нужна, и долго живущим каллбеком.

Andrew
10.09.2017
14:56:55
Да, понял

Google

Friedrich
10.09.2017
14:58:40
Мол, возможна утечка памяти.

Ivan
10.09.2017
14:59:38
Ага, а вот разрулить можно только с большим оверхиадом по коду

Nikolay
10.09.2017
15:19:43

Ivan
10.09.2017
15:56:53
Не лучший вариант

Andrew
10.09.2017
16:21:45
Ну вообще условия для появления утечки довольно специфические. Если один метод сначала создает большой объект, замыкает его, а потом еще вешает отдельный долгий хэндлер с другим замыканием - это первая кандидатура на рефакторинг

Ivan
10.09.2017
16:42:31
Элементарно устроить при подписке на эвент
Абсолютно та же история на асинках - await не предпологает освобождение неиспользуемых ниже локальных переменных.

Klei
10.09.2017
19:10:17

Enhed
10.09.2017
19:20:35

Evgeniy
11.09.2017
11:59:58
Привет! o/

Pavel
11.09.2017
12:00:09

Evgeniy
11.09.2017
15:56:21
@angmarr Сайм говорит, что нужно использовать аннотации типов.

Igor
11.09.2017
15:57:29

Evgeniy
11.09.2017
15:58:07

Igor
11.09.2017
15:59:11

Evgeniy
11.09.2017
16:56:30

Oleg
11.09.2017
18:18:14
Vasily Нашел решение про интексацию пар?

Evgeniy
11.09.2017
19:57:05
https://twitter.com/Jimmy_Byrd/status/907319634675879938
Fable.Template.Library обновили.

Google

Vasily
11.09.2017
20:48:09
Но у меня специфический кейс, который позволил сделать за один подход
Проход
А еще до меня наконец-то дошло практическое применение chunkBySize

Evgeniy
12.09.2017
06:12:28
@fvnever
https://github.com/matthid/s2client-dotnet/blob/master/Readme.md

Friedrich
12.09.2017
06:12:54

Evgeniy
12.09.2017
14:26:03
Посмотрите, о чем твитнул(а) @bentnib: https://twitter.com/bentnib/status/907575086332465152?s=09
Может быть вам будет интересно, это книга про Standard ML.

Oleg
12.09.2017
15:12:54

Vasily
12.09.2017
15:13:57
Так что там O(n) получилось
Навскидку
Плюс не бывает одновременно двух пересечений

Oleg
12.09.2017
15:15:01
@gsomix привет, ты не копал в сторону FSI для netcore? Хочу более интерактивную разработку с Giraffe - либо hotload, либо REPL

Evgeniy
12.09.2017
15:17:19

Vasily
12.09.2017
15:17:21
Там все пересечения ищутся простым перебором
В силу условий задачи
Условно, пересекаться могут только два соседних

Oleg
12.09.2017
15:19:04
Привет. Нет, не копал пока.
Я вчера весь вечер провозился безрезультатно, даже для full framework не получилось - объекты не создаются, не все резолвится

Google

Oleg
12.09.2017
15:21:02

Vasily
12.09.2017
15:25:09
Проблема в том, что R- дерево еще надо построить

Oleg
12.09.2017
15:31:02

Vasily
12.09.2017
15:33:59
Ну для моего случая дерево будет очень разреженным
Я какую-то подобную структуру думал построить
Но там скорее массив деревьев тогда

Evgeniy
12.09.2017
15:48:51
Раз заговорили про деревья. А какие есть хорошие библиотеки с коллекциями для F#? В каком они состоянии? Может их причесать надо, под нетстандарт собрать?

Oleg
12.09.2017
16:22:38
Писал три недели доки (https://github.com/OlegZee/Xake/wiki) и только сейчас, спустя два месяца, обнаружил, что не добавил ссылку на страницу проекта. Без документации грустно все это выглядит

Evgeniy
12.09.2017
16:27:13

Oleg
12.09.2017
17:03:06
трансляция началась

Evgeniy
12.09.2017
17:11:22

Кирилл
12.09.2017
17:35:44
Apple?

Evgeniy
12.09.2017
17:46:53
Ах. :)

6996
12.09.2017
20:11:45

Andrew
12.09.2017
20:12:18
@gsomix Алярма

Xak
12.09.2017
20:17:32
бан, наверное

Летучая
12.09.2017
20:17:46
Интересный канал, надо рассмотреть.

Pauline
12.09.2017
20:23:15
нажала и аж телеграм вылетел

Igor
12.09.2017
21:40:18
Есть тут у нас Киевляне?
https://twitter.com/AntyaDev/status/907604544208687104

Google

Evgeniy
13.09.2017
06:32:41
Никак не соберусь завести свой небольшой канал, поэтому положу сюда.
Доклад Brian Goetz, архитектора языка Java, про важность понимания различных парадигм и про их правильное использование. Перекликается с принципом "FP in small, OO in big", который продвигается в F# сообществе. Название, ну, такое. :)
https://www.youtube.com/watch?v=ROL58LJGNfA
Paket победил.
https://github.com/NuGet/NuGetGallery/pull/4638
> Definitely :)
https://github.com/fsharp/fslang-suggestions/issues/594#issuecomment-329092773
А я что-то не смог придумать, как можно здесь сообщение об ошибке улучшить. :(
@fvnever @angmarr
Проверять, что у Record1 и Record2 есть общие поля (id), и сообщать пользователю о том, что нужно правильную аннотацию типа указать?

Снежный
13.09.2017
10:08:00
Всем привет. Подскажите, пожалуйста, как в конструкторе класса в метод дргугого класса передать this, в C# - все ок, а в F# он не понимает this

Летучая
13.09.2017
10:08:29

Снежный
13.09.2017
10:09:04
эээ, не понял

Летучая
13.09.2017
10:09:35
type CheckerService () as this =