@Fsharp_chat

Страница 26 из 772
Friedrich
05.04.2017
09:34:46
Мб распределённые ЭМП-вычисления запилим?

Evgeniy
05.04.2017
09:36:04
Давай. @fvnever А у тебя есть, где распределять?

Friedrich
05.04.2017
09:36:23
Да, у меня есть где распределять.

Я в основном провожу расчёты на десктопе, но у меня же двенадцатиядерный сервер ещё.

Google
Friedrich
05.04.2017
09:36:42
Хорошо бы между ними распределить!

Evgeniy
05.04.2017
09:37:29
Подумаю над этим, когда с учебой разберусь.

Friedrich
05.04.2017
09:37:58
Ты там дописал свой философский трактат? :)

Evgeniy
05.04.2017
09:38:15
Нет еще. А дедлайн прошел!

Friedrich
05.04.2017
09:38:25
Давай-ка берись за ум!

Evgeniy
05.04.2017
09:38:42
А не поздно-то? :)

Friedrich
05.04.2017
09:38:51
Браться за ум никогда не поздно.

У меня тут чото тоже навалилось: надо магистрантов к конференции готовить, тезисы им там писать всякие, отзывы.

Но я держусь. И ты держись!

И дописывай трактат.

Evgeniy
05.04.2017
09:42:13
https://hh.ru/vacancy/16812547

Friedrich
05.04.2017
09:43:45
> Разработка ведётся на новом кроссплатформенном языке программирования, сочетающем в себе особенности функциональных и императивных языков (и в чём-то похожем на такие языки как F#, O’Caml Haskell, Scala) Занимательно.

Evgeniy
05.04.2017
09:44:15
Это VB поди!

Google
Evgeniy
05.04.2017
09:44:18
:3

Friedrich
05.04.2017
09:44:37
VB далеко не нов.

Evgeniy
05.04.2017
09:45:35
Ладно. Что это может быть?

@fvnever Да, я думаю, если аккуратно покрутить формулы FDTD, то можно что-то распределенное запилить.

Friedrich
05.04.2017
10:06:59
Я чото думал, что все эти MBrace сами за меня всё распределят, без кручения.

FDTD же мапится на довольно простые операции над массивами.

Nikolay
05.04.2017
10:08:04
А есть какие-нибудь репозитории, где можно посмотреть примеры правильной работы с БД в F#

Ну всмысле что-то типа Repository pattern, только в F#

Friedrich
05.04.2017
10:09:15
А есть какие-нибудь репозитории, где можно посмотреть примеры правильной работы с БД в F#
У меня есть игрушечный пример на F# + EF: https://github.com/ForNeVeR/EvilPlanner/blob/develop/EvilPlanner.Logic/QuoteLogic.fs#L43-L66

Вот этот модуль QuoteLogic, считай, репозиторий и есть.

Evgeniy
05.04.2017
10:10:45
@fvnever Я думаю, что оно распределит, но не самым эффективным образом.

Evgeniy
05.04.2017
10:10:56
Можно распределить с большим количеством коммуникаций, а можно с малым.

Evgeniy
05.04.2017
10:11:53
@fvnever Например, в обычной реализации FDTD из книжки ячейки хитро завязаны друг с другом.

Roman
05.04.2017
10:11:57
А митапы надо бы сделать. Даже в Минске они есть

Nikolay
05.04.2017
10:11:58
Вот этот модуль QuoteLogic, считай, репозиторий и есть.
Ну в репозитории обычно db context резолвится через DI, например, или конструктор репозитория, а здесь получается на каждый запрос надо его передавать, выглядить не очень красиво

Google
Friedrich
05.04.2017
10:12:49
Мне было скучно реализовывать все те же обычные паттерны на F#.

Evgeniy
05.04.2017
10:14:05
@Dolfik @fvnever Реализовал бы Reader?

Nikolay
05.04.2017
10:14:28
Используй каррирование, Люк.
Дело не в этом, просто неудобно таскать за собой контекст, если он в разных модулях используется

Friedrich
05.04.2017
10:14:52
К Reader та же самая претензия.

Nikolay
05.04.2017
10:14:55
Хотя могу ошибаться, ибо пока в ФП не очень

Friedrich
05.04.2017
10:15:20
Можно какой-то один общий контекст таскать с собой, из которого всё резолвить.

Friedrich
05.04.2017
10:15:37
Но я не уверен, как это правильно сделать, не прибегая к ООПшным паттернам.

И нужно ли это делать, намеренно их избегая, например :)

Evgeniy
05.04.2017
10:16:05
@Dolfik Да, никто не мешает заюзать ООП.

Roman
05.04.2017
10:16:08
Но я не уверен, как это правильно сделать, не прибегая к ООПшным паттернам.
F# поддерживает ООП, его не надо чураться в F# , я думаю.

Nikolay
05.04.2017
10:16:20
class Repository { private DbContext _context; public Repository(DbContext context) { _context = context; } public List<MyData> GetSomeData() { ... } }

Evgeniy
05.04.2017
10:16:30
ФП в малом, ООП в большом. Как ЦарьПалис учил. :)

Friedrich
05.04.2017
10:16:41
F# поддерживает ООП, его не надо чураться в F# , я думаю.
В продакшен-коде на F# — безусловно, не нужно.

А в экспериментальном проектике можно и что-то более тонкое посмотреть, чем Repository pattern :)

Хотя я не уверен, чем его заменить.

Google
Friedrich
05.04.2017
10:17:49
Ну то есть у меня вон там вот такой репозиторий. Без DI, просто создаём хардкоженный контекст и лезем в него.

Nikolay
05.04.2017
10:17:55
Вот пример репозитория, достаточно удобно с таким работать, например когда он через DI всё сам подтягивает, остаётся просто добавить в конструктор класса (для DI) и можно использовать Repository.GetSomeData в нужном месте, без создания контекста

Evgeniy
05.04.2017
10:17:57
@fvnever Кстати, palis -- это борьба. Поэтому тот чувак -- Царь борьбы?

Friedrich
05.04.2017
10:18:05
Или Цареборец.

Nikolay
05.04.2017
10:18:10
Ну либо через одиночку

Evgeniy
05.04.2017
10:18:12
Вполне.

Nikolay
05.04.2017
10:18:44
Ну, репозиторий при таком подходе в целом удобен

Friedrich
05.04.2017
10:18:54
Я делал более интерпрайзноватые проекты на F#, в которых использовал Unity DI (почему-то). Нормально выходит.

Nikolay
05.04.2017
10:19:17
Но вот про DI мне кажется это не совсем функциональный стиль

Roman
05.04.2017
10:19:24
Evgeniy
05.04.2017
10:19:29
Я, кстати, давно хотел прочитать. http://blog.ploeh.dk/2017/01/27/from-dependency-injection-to-dependency-rejection/

Friedrich
05.04.2017
10:19:58
Но вот про DI мне кажется это не совсем функциональный стиль
Можно DI как-нибудь красиво интегрировать, и будет функционально.

Nikolay
05.04.2017
10:20:00
Значит используй DI
Я F# планировал учить, чтобы писать на нём в функциональном стиле, а не в ООП :)

Evgeniy
05.04.2017
10:20:18
@Dolfik Значит, ты пропустил суть F#. :)

Суть в том, чтобы и так, и сяк.

Roman
05.04.2017
10:20:27
Можно DI как-нибудь красиво интегрировать, и будет функционально.
В целом красиво интегрировать diэто использовать reader)

Friedrich
05.04.2017
10:20:35
Да, это верно.

Nikolay
05.04.2017
10:20:43
Суть в том, чтобы и так, и сяк.
Но никто не запрещает же писать только так, или только сяк?

Google
Friedrich
05.04.2017
10:20:44
Это я примерно вижу, как можно сделать.

Evgeniy
05.04.2017
10:21:10
@Dolfik Это приводит к разным последствиям...

Friedrich
05.04.2017
10:21:15
Никто
А как же полиция? ?

Evgeniy
05.04.2017
10:21:50
@Dolfik В пределе у тебя будет или как в C#, или пародия на хаскель.

Friedrich
05.04.2017
10:21:50
Полиция F# энфорсит правильный стиль программирования!

Evgeniy
05.04.2017
10:23:59
@neftedollar Ок, хороший tl;dr. Так и не прочитаю же. :)

Roman
05.04.2017
10:24:27
Evgeniy
05.04.2017
10:24:46
@fvnever Полиция F# в слэке и твиттере работает. А мы на свободной земле! :)

Friedrich
05.04.2017
10:25:32
:D

Nikolay
05.04.2017
10:28:50
В F# ещё комьюнити приятное :)

Evgeniy
05.04.2017
10:30:55
@Dolfik Кажется, есть разное ООП. Есть ООП про иерархии классов, а есть -- про интерфейсы, управление зависимости и сокрытие состояния. Например, если посмотришь на нормальную систему модулей в ML, то увидишь много знакомых из ООП вещей.

Можно считать, что ООП в F# -- это способ решать некоторые задачи, для которых в ML используются модули.

@fvnever А в getQuote, наверное, можно заюзать try with вместо Async.Catch.

Friedrich
05.04.2017
10:49:53
А try-with работает внутри async?

Evgeniy
05.04.2017
10:50:58
Да.

@fvnever SqlException хитрый.

Artemy
05.04.2017
11:08:46
Добрый день

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