@Fsharp_chat

Страница 664 из 772
Mikhael
12.08.2018
18:56:41
Ну, типа как «Воет ли чёрная луна», kekeke.
Нет не воет только рэп читает

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

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

Google
Roman
13.08.2018
07:42:45
Это же подход. А я говорю про пакеты его реализовывающие.
А, чизи же его и реализует. Да. Сорян. Валидаторы это ф-ции. Просто должны result возвращать.

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
да, но это отдельные сущности и я могу в первый сет добавить 1 и во второй тоже 1
при сборке таких множеств получится множество содержащее только 1 я не понял вопроса наверное

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
?
лол)))) это я час или два назад написал чтобы ты спамера удалил, а бот только что сообразил, забей

Ну disjoint set хорош, когда его не надо перестраивать
так добавление в него разве не тривиально?

Vasily
13.08.2018
11:45:38
В целом тривиально

Там первый, кто попал под условие вроде

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
кинь им пул реквест, правка элементарная вроде
Ну, не очень) как минимум надо выбрать куда вставить, скорее всего рядом с i, да еще и скомпилить и проверить)

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
Сделай рекорд

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#, надеюсь скоро стать активным участником комьюнити

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
Ну смотри

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