@Fsharp_chat

Страница 467 из 772
Денис
05.02.2018
12:41:31
https://hastebin.com/iruvoyusit.fs Можно этот код упростить как то?

Evgeniy
05.02.2018
12:49:08
Царьпалис новую статью написал. https://eiriktsarpalis.wordpress.com/2018/02/05/property-testing-generic-programs/

Klei
05.02.2018
12:56:00
Народ, я почти добил свой перевод (сейчас в моей приватной репе на vsts). Может форкнем репу FFF&P? Чтобы я сразу на нее PR кинул.

Google
Klei
05.02.2018
12:57:12
У него достаточно много ссылок на другие материалы на его же сайте. Можно будет не править навигацию.

Klei
05.02.2018
13:09:43
А он хостит переводы?
Не, я имею ввиду держать нашу собственную версию с частично переведенным контентом.

А переводов я у него не видел.

Evgeniy
05.02.2018
13:10:06
@neftedollar @fvnever

Friedrich
05.02.2018
14:03:47
@neftedollar @fvnever
А ты что думаешь? Давайте форкнем.

https://youtu.be/ez8t1tDqHEk воу! @shwars берёт интервью у Сайма! ЪЪ

Evgeniy
05.02.2018
14:06:08
Ну, я там видел.

Friedrich
05.02.2018
14:06:31
Теперь все увидят, ссылка из F# Weekly :)

Evgeniy
05.02.2018
14:07:14
Friedrich
05.02.2018
14:07:26
Ок, а какую репу-то? :)

Скажите репу, я форкну в комьюнити.

Google
Evgeniy
05.02.2018
14:07:55
https://github.com/swlaschin/fsharpforfunandprofit.com

Тебе лишь бы пофоркать!

Friedrich
05.02.2018
14:08:36
@Kleidemos, прошу! https://github.com/fsharplang-ru/fsharpforfunandprofit.com

Klei
05.02.2018
14:09:07
Ок, сегодня сделаю PR.

Friedrich
05.02.2018
14:09:21
В бранч master-ru, пожалуйста.

Vlad
05.02.2018
14:16:13
https://youtu.be/ez8t1tDqHEk воу! @shwars берёт интервью у Сайма! ЪЪ
Интересно, вытащат ли сайма на дотнекст

Roman
05.02.2018
14:30:11
@nevoroman
На ближайший нет

На следующий попробую

Dmitri
05.02.2018
14:57:24
Интересно, вытащат ли сайма на дотнекст
Один раз мы были близки к тому, чтобы вытащить его в Россию, но помешало извержение вулкана (не летали самолёты). С тех пор не получалось, он отказывался под предлогом, что не хочет много путешествовать.

Vladimir
05.02.2018
15:39:54
Есть вопрос - кто как хранит логику по валидации моделей? В сишарпе я обычно пишу метод Validate или IsValid в классе модели, с рекордами так не прокатывает, а классы не хочется писать)

Григорий
05.02.2018
15:40:51
как вариант завести модуль для конкретного типа

и да у рекорда можно создать метод ))

Vladimir
05.02.2018
15:42:14
и да у рекорда можно создать метод ))
и потом его постоянно прописывать при создании рекорда?

Григорий
05.02.2018
15:46:47
собственно, будет работать также как и обычный метод у класса, метод описывает за счет расширения записи

только выглядит экзотично =)

Vladimir
05.02.2018
15:48:08
аа, через with, вижу, спасибо)

Friedrich
05.02.2018
15:48:11
Есть вопрос - кто как хранит логику по валидации моделей? В сишарпе я обычно пишу метод Validate или IsValid в классе модели, с рекордами так не прокатывает, а классы не хочется писать)
Есть совет задуматься над тем, чтобы делать невалидные состояния непредставимыми, вот это всё. Но это не ответ, я с этим заранее согласен.

Google
Vladimir
05.02.2018
15:48:58
Я делаю десериализацию, а после нее нужно проверить что значения валидные

Friedrich
05.02.2018
15:49:00
Я бы в модулях, соответствующих моделям, сделал функции валидации, пожалуй. Методы не всегда хорошо смотрятся.

Но это совет тоже не очень-то толковый, потому что он не говорит, что с этими функциями делать дальше :)

Я делаю десериализацию, а после нее нужно проверить что значения валидные
Ну вот я представляю себе такой код: data // string |> deserialize // Result<Model, DeserializationException> |> validate // Result<Model, ValidationException> Ведь так нас учат гуру, правильно?

Vladimir
05.02.2018
15:51:40
да, учат чтобы было так красиво) но что здесь есть validate?)

deserialize то он общий для всех типов, а validate у каждого свой

Friedrich
05.02.2018
15:53:21
Ну, тут можно по-разному начинать выкручиваться, чтобы это сделать кратко и в то же время аккуратно.

Aleksander
05.02.2018
15:53:36
Не уверен что в валидации стоит использовать эксепшены, по крайней мере в F#, и если валидацию ты пишешь сам

Friedrich
05.02.2018
15:54:05
Например, сделать функцию, которая этим validate параметризуется. И потом let myModelModule = makeDeserializator MyModel.deserialize MyModel.validate

Не уверен что в валидации стоит использовать эксепшены, по крайней мере в F#, и если валидацию ты пишешь сам
Ну, это я образно описал, используйте дальше что хотите. Да, пожалуй, слово Exception в моём тексте стоит заменить на Error.

Vladimir
05.02.2018
15:55:54
Например, сделать функцию, которая этим validate параметризуется. И потом let myModelModule = makeDeserializator MyModel.deserialize MyModel.validate
и так под каждый тип) сишарповский вариант выглядит очень неплохо let model = deserialize str; if (model.IsValid) ..

Friedrich
05.02.2018
15:56:55
и так под каждый тип) сишарповский вариант выглядит очень неплохо let model = deserialize str; if (model.IsValid) ..
Ну, это зависит уже от того, как ты дальше строишь код. Лично меня твой подход бы устроил, если он применён консистентно. Ещё в интерфейс это засунь, и можно писать общие методы по валидации моделей.

Evgeniy
05.02.2018
15:58:06
Интерфейс + функция validate выглядят неплохо.

Ну, или SRTP примотать изолентой.

Oleg
05.02.2018
16:04:21
А что, книгу Domain Modelling Made Functional не читали? Там советуют использовать Dto объекты для сериализации, валидацию делать при создании доменного объекта, то о чем Фридрих говорит

Vladimir
05.02.2018
16:06:25
ну вот у меня первая строчка это десериализация, а следующая это создание доменного объекта

соответственно между ними нужно его провалидировать)

https://fsharpforfunandprofit.com/posts/serializating-your-domain-model/ Вот тут есть упрощенный вариант. Типа из дто мы делаем доменную модель, но в реальности, из дто и еще парочки других значений. Так что выносить в отдельный метод jsonToDomain с кучей параметров на хочется

как вариант завести модуль для конкретного типа
попробовал, тут проблема в том что нужно открывать каждый модуль отдельно, а хочется просто неймспейс открыть и все типы в неймспейсе автоматом подтянулись

Google
Vladimir
05.02.2018
16:20:23
Не очень понял) Вот у меня есть модуль MyApp.DtoType В нем есть тип DtoType. Тогда возникает проблема как я описал, как их сделать на том же уровне?

Klei
05.02.2018
16:21:01
type DtoType = ... module DtoType = ...

Vladimir
05.02.2018
16:22:49
а что внутри module DtoType?

если функция валидации там, то все равно надо сделать open MyApp.DtoType

в общем, вариант рекорда с with мне понравился, всем спасибо)

Klei
05.02.2018
16:41:03
А почему нельзя писать DtoType.validate?

Заодно вывод типов подъедет.

Время бросать камни. https://github.com/fsharplang-ru/fsharpforfunandprofit.com/pull/1

Vladimir
05.02.2018
18:20:12
А почему нельзя писать DtoType.validate?
потому что не хочется писать DtoType. =) Но впринципе можно

ну и еще минус небольшой, что нельзя вынести в общую для всех логику deserialize+validate (если вдруг захочется)

Artemy
05.02.2018
18:34:08
Народ, я почти добил свой перевод (сейчас в моей приватной репе на vsts). Может форкнем репу FFF&P? Чтобы я сразу на нее PR кинул.
М.б. лучше форкать реп для gitbook? Там, гипотетитчески, можно будет полную русскую версию в исходный репозиторий отправить и опубликовать параллельно с имеющимися на данный момент английской и японской версиями.

Klei
05.02.2018
18:34:39
У него два репозитория?!

Artemy
05.02.2018
18:35:44
https://github.com/swlaschin/fsharpforfunandprofit.gitbook

Klei
05.02.2018
18:35:57
*много мата*

Да, надо форкать тот.

Я собственно его и скачивал в первый раз.

Artemy
05.02.2018
18:36:22
Я вот для своего перевода оттуда форкал

Roman
05.02.2018
18:36:32
Упс

Google
Klei
05.02.2018
18:36:55
Щас еще проблемы решал связанные с разницей между ними.

Кто-нибудь, сделайте форк гитбука. Я щас все туда перенесу.

Artemy
05.02.2018
18:39:38
А что за gitbook?
https://www.gitbook.com/book/swlaschin/fsharpforfunandprofit/details

Klei
05.02.2018
18:41:01
у gitbook максимум 5 участников может быть, печально. Было бы хорошо ее использовать для всего остального, а жаль(
Можно держать оригинальный репозиторий на гитхабе, а гитбук будет его тянуть и собирать в книгу.

Roman
05.02.2018
18:41:15
А, типа все переведённые статьи сразу в одну gitbook запихнуть?
А т.е. паблишить только туда? Хоршая мысль, спасибо

Artemy
05.02.2018
18:41:23
Блин, я, видимо, перепутал насчёт японского языка. Это какая-то другая книга с японским переводом была

Artemy
05.02.2018
18:41:39
Не, что-то по F#, вроде

Artemy
05.02.2018
18:43:31
Или это вообще не gitbook была, а просто странички проектов

Но не суть, главное, что gitbook поддерживает верси на разных языках

Klei
05.02.2018
18:48:20
Ну я тоже что-то встречал по F# на гитбук с японским переводом. Но что не помню.

Момент
Ты же про форк говорил?

Roman
05.02.2018
18:50:17
https://github.com/fsharplang-ru/fsharpforfunandprofit.gitbook

Сорри, увлекся документацией

Klei
05.02.2018
18:52:20
https://github.com/fsharplang-ru/fsharpforfunandprofit.gitbook
Еще ветвь master-ru надо бы.

Roman
05.02.2018
18:52:28
ок

https://github.com/fsharplang-ru/fsharpforfunandprofit.gitbook/tree/master-ru

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