
Mikhael
12.08.2018
18:56:41

Klei
13.08.2018
06:18:59
Что у нас сейчас юзается для валидации (н-р DTO)? Кроме Chessie что-нибудь еще есть?

Roman
13.08.2018
07:29:52

Klei
13.08.2018
07:42:07
ROP
Это же подход. А я говорю про пакеты его реализовывающие.

Google

Roman
13.08.2018
07:42:45
https://github.com/dbrattli/Re-action

Владислав
13.08.2018
10:21:40
привет! Как описать связь 1-N и чтобы было ясно, что среди всех групп N нет пересечений?

Ayrat
13.08.2018
10:22:15
Set?
т.е. в модели сделай поле Set<'a>
type Manager =
{ Name: string
Slaves: Set<Employee> }

Владислав
13.08.2018
10:23:45
не совсем, чтобы собрать потом все Set'ы и между ними не было пересечений

Ayrat
13.08.2018
10:24:15
Не понял. Сеты собираются в сет без пересечений априори

Владислав
13.08.2018
10:25:13
да, но это отдельные сущности и я могу в первый сет добавить 1 и во второй тоже 1

Klei
13.08.2018
10:25:27

Владислав
13.08.2018
10:25:35
я не совсем понимаю как описать доменную модель так чтобы это было сразу ясно
что вот здесь у меня уникальные значения для всего проекта, а не только для конкретной сущности

Ayrat
13.08.2018
10:26:13

Google

Ayrat
13.08.2018
10:26:59
если по примеру выше надо чтобы у манагера Васи были 3 уникальных раба, которых не может иметь манагер Петя?

Владислав
13.08.2018
10:27:17
да

Ayrat
13.08.2018
10:28:34
я не знаю как описать непересекающиеся множества в типах на F#

Владислав
13.08.2018
10:29:18
а есть варианты как это можно по-другому сделать?

Klei
13.08.2018
10:29:39
Я бы полез в канонические реалзиации DSU и просто надстроил бы сверху допсущности.

Ayrat
13.08.2018
10:30:41
я бы сделал пару допущений для простоты и забабахал сетами или даже обычными листами/массивами.
Создание такой сущности вывел в отдельный кусок кода, который убеждался в уникальности создаваемого множества.

Владислав
13.08.2018
10:32:09
а как он бы убеждался, если данные он не хранит?
я как-то такое делал просто описывая переменную, которая говорит уникальное значение ли. А посчитать эту переменную дело уже не его. Это норм вариант?

Ayrat
13.08.2018
10:33:26
Ну тут проблема. Чтобы гарантированно убеждаться надо взять одно большое множество и наделать из него много маленьких, непересекающихся.
Валидация маленького множества возможна только при знании всех остальных, ну тут проще

Klei
13.08.2018
10:33:54
Количество множеств и сами множества изменяемы?

Владислав
13.08.2018
10:34:20
да

Klei
13.08.2018
10:35:12
Генерация отдельного множеств за O(n) - норм?

Владислав
13.08.2018
10:36:06
допустим, но я не понял зачем мне его генерить)
моя задача описать связь комнаты с игроками по примеру как это делает база данных один ко многим

Klei
13.08.2018
10:37:22
Если надо гарантировать, что множества непересекающиеся, то придется иметь большую структуру включающую все множества сразу.

Владислав
13.08.2018
10:38:22
идея таблицы Player {Id, RoomId}, где RoomId уникально решает мою здачу, но там она знает про все сущности

Klei
13.08.2018
10:39:07
Посмотри http://neerc.ifmo.ru/wiki/index.php?title=СНМ_%28наивные_реализации%29 мне кажется, что этого более чем достаточно.

Ayrat
13.08.2018
10:41:13

Владислав
13.08.2018
10:41:22
Да

Ayrat
13.08.2018
10:41:28
тогда мне кажется мапинга Игрок -> Комната будет достаточно
1:1

Google

Ayrat
13.08.2018
10:41:57
некий глобальный объект - лес
который содержит всех активных игроков по ключу
в этом лесе надо объединять по значению (комнате) в локальные множества.
Так можно будет быстро узнать кто сидит в комнате 1, например
Короче @Kleidemos прав, тут надо именно эту структуру юзать

Владислав
13.08.2018
10:45:32
Ну получается репозиторий

Ayrat
13.08.2018
10:46:16
Ну если обзывать репозиторием всё что содержит данные, то массив тоже репозиторий)))

FailsBot
13.08.2018
11:13:59
Ayrat cast summon Neftedollar

Vasily
13.08.2018
11:16:29
Ну disjoint set хорош, когда его не надо перестраивать

Roman
13.08.2018
11:16:32

Ayrat
13.08.2018
11:24:47
?
лол)))) это я час или два назад написал чтобы ты спамера удалил, а бот только что сообразил, забей

Vasily
13.08.2018
11:45:38
В целом тривиально
Там первый, кто попал под условие вроде

Vlad
13.08.2018
11:57:56

Vladimir
13.08.2018
12:16:56

Ayrat
13.08.2018
13:02:59
а то
https://github.com/ionide/ionide-fsgrammar/blob/590e98ee31bfb6e0a98b77b77a621ccd056bc2fd/grammar/fsharp.json#L803
кинь им пул реквест, правка элементарная вроде

Vladimir
13.08.2018
14:08:43

Ayrat
13.08.2018
14:09:15
я кстати прогнал, токены вроде на лету нельзя разбивать, можно только у уже готовых токенов менять всякое

Vladimir
13.08.2018
14:15:59
мб, я уже вот тут c:\Program Files\Microsoft VS Code\resources\app\extensions\fsharp\syntaxes\fsharp.tmLanguage.json поменял, эффекта не получилось

Roman
13.08.2018
14:45:14
Привет!

Google

Roman
13.08.2018
14:45:17
Господа, есть такая проблема:
Если коротко, мне нужно передать в модуль зависимость, конкретно функцию, если это важно.
Модуль рекурсивный, в нем есть система из MailboxProcessor-ов, которые друг другу шлют сообщения, некоторые в обе стороны (для того и модуль и рекурсивный, собсно)
Если эту зависимость гвоздями прибить, то все решается само собой, но как только пытаешься ее внедрить извне, все ломается, пушто не получается без нее инициализировать 1 мейлбокс, на который завязаны другие.
В какую сторону смотреть?
1 из вариантов, которые я вижу - сделать это не модулем, а объектом, а все мейлбоксы - полями

Vasily
13.08.2018
14:45:49
Сделай рекорд

Roman
13.08.2018
14:45:52
Господа, есть такая проблема:
Если коротко, мне нужно передать в модуль зависимость, конкретно функцию, если это важно.
Модуль рекурсивный, в нем есть система из MailboxProcessor-ов, которые друг другу шлют сообщения, некоторые в обе стороны (для того и модуль и рекурсивный, собсно)
Если эту зависимость гвоздями прибить, то все решается само собой, но как только пытаешься ее внедрить извне, все ломается, пушто не получается без нее инициализировать 1 мейлбокс, на который завязаны другие.
В какую сторону смотреть?
1 из вариантов, которые я вижу - сделать это не модулем, а объектом, а все мейлбоксы - полями
Хороший вариант

Vasily
13.08.2018
14:46:08
У которого поля - функции работы с боксами
Типа Api
Заодно спрячешь всякие AsyncReplyChannel

Roman
13.08.2018
14:46:45
их я уже спрятал)

Vasily
13.08.2018
14:47:24
Ну и зависимость между мейлбоксами, по идее, надо бы развязывать
Но тут, возможно, уже акка понадобится :)

Alex
13.08.2018
14:47:46
Привет!
Всем привет!
Разбираюсь с f#, надеюсь скоро стать активным участником комьюнити

Vasily
13.08.2018
14:48:27

Roman
13.08.2018
14:49:18
Типа Api
вот так запаковал:
https://gist.github.com/kagetoki/8275d7656f3a5205a2b9c119f3aa15bd

Vasily
13.08.2018
14:49:58
Мейлбокс один у тебя?

Roman
13.08.2018
14:50:21
нет же, пачка с циклическими зависимостями между собой

Vasily
13.08.2018
14:50:32
В смысле каждого типа
И циклические зависимости говорят о том, что что-то идет не так

Roman
13.08.2018
14:51:02
каждого типа да, по одному

Vasily
13.08.2018
14:51:44
Ну вытащи апи для инициализации
Как минимум

Roman
13.08.2018
14:51:54
я тоже сначала так думал, но как иначе сделать, если 1 хранит 1 состояние, другой другое, и при определенных командах они должны слать друг другу сообщения, чтоб проапдейтить стейт

Google

Roman
13.08.2018
14:52:12

Vasily
13.08.2018
14:52:23
Ну смотри