
Friedrich
18.06.2017
15:49:10

Aleksander
18.06.2017
15:49:20
и можно безопаснее, выкинув рэндом)

Friedrich
18.06.2017
15:49:41

Igor
18.06.2017
15:49:53

Google

Aleksander
18.06.2017
15:51:48
ну да, в плане простоты - сложно что-то короче придумать

Friedrich
18.06.2017
15:51:59

Aleksander
18.06.2017
15:52:00
разве что выкинуть locker и лочить на сам rand

Friedrich
18.06.2017
15:52:40
В смысле, и считать так считается дурным тоном, и делать lock(this) тоже :)

Aleksander
18.06.2017
15:53:09
да, поэтому я бы так делать не стал:)

Igor
18.06.2017
15:53:46

Friedrich
18.06.2017
15:54:20
О, слушай, а ведь у нас есть MailboxProcessor в стандартной либе
Обе задачи можно решить с его помощью — и мне кажется, что как минимум второе будет выглядеть более изящно.

Igor
18.06.2017
15:59:14

Nikolay
18.06.2017
16:01:49
https://gist.github.com/Dolfik1/86355aa1eedaff641806f632a6fb2211
Что можно лучше тут сделать? :)

Friedrich
18.06.2017
16:17:42

Google

Friedrich
18.06.2017
16:19:11
Хотя там чёт невероятное количество приседаний, да и API не очень интуитивный. Мне не нравится MailboxProcessor, прямо скажу.

Igor
18.06.2017
16:21:10
А он лочит тред на actor.PostAndReply?

Friedrich
18.06.2017
16:21:33
Да. Ну, видишь, у меня там x и y это обычные числа, без асинков.
У него есть неблокирующий PostAndAsyncReply.

Aminion
18.06.2017
17:15:14
Ребята, сориентируйте, а что в довесок к фп на сервере, юзать на фронте? Язык и фреймворк для SPA
Чтоб функционально.

Igor
18.06.2017
17:20:16

Evgeniy
18.06.2017
17:45:11

Nikolay
18.06.2017
17:45:25

Pawel
18.06.2017
17:57:12

Igor
18.06.2017
17:59:26
Спасибо, что-то похожее было выше.
Но я уже писал, мне нужно просто, а не быстро (жалко в .NET нет из коробки ThreadLocalRandom как в Java)
Я так понимаю фишка MailboxProcessor в том что там вместо лока compare&swap?

Evgeniy
18.06.2017
18:01:04
Как?
Проверку на длину интервала вынести в начало функции.

Pawel
18.06.2017
18:04:32
Я так понимаю фишка MailboxProcessor в том что там вместо лока compare&swap?
не совсем, там хитрее. Например вот такой код с compare и swap не работает так как можн опредположить - не лочит:
let refCell = ref value
let rec swap f =
let currentValue = !refCell
let result = Interlocked.CompareExchange<'T>(refCell, f currentValue, currentValue)
if obj.ReferenceEquals(result, currentValue) then result
else Thread.SpinWait 20; swap f

Nikolay
18.06.2017
18:23:27
https://gist.github.com/Dolfik1/86355aa1eedaff641806f632a6fb2211
Без мутабельности, но на 3 строчки больше получилось

Axm
18.06.2017
18:23:56

Nikolay
18.06.2017
18:24:10
:)

Pawel
18.06.2017
18:34:35

Google

Pawel
18.06.2017
18:39:12
clj крут для маленьких one man projects. Но все эти Om-ы и Reagent-ы дико тормозные

Evgeniy
18.06.2017
19:12:44
Async MapReduce: #fsharp to #kotlin
https://vasily-kirichenko.github.io/fsharpblog/async_map_reduce

Igor
18.06.2017
19:20:14
Хочу запросить в котлин чат
Пока что увидел только оценочное суждение автора что в котлин лучше. Но это достаточно спорно, мне кажется в F# гибче с билдерами.

Evgeniy
18.06.2017
19:25:35
@angmarr А прошлые его посты видел?

Pawel
18.06.2017
19:30:22

Igor
18.06.2017
19:31:13
Если ты знаешь C# 8.0, то ты на 90% знаешь котлин (только скобочки, там как в (java)
Поэтому после года использования, я не вижу в нем ничего интересного (в отличие от той же Scala)

Pawel
18.06.2017
19:34:48
ну знаешь ли.. я вот сейчас anko курю. в C# подобного и близко нет, потому что лямбды не могут быть расширениями класса

Igor
18.06.2017
19:36:21
И не надо забывать что котлин ооп языке.
В котлин чате постоянно задают вопросы "зачем нужны sealed классы".
Концепцию кейс классов (типа замена АТД), почти никто не знает в чате. В той же Scala, это базовые вещи.
Когда я задвигаются им про ФП, почти никто не врубается, дикие люди (только слезли с пальмы java ?)


Pawel
18.06.2017
19:49:35
Я когда то был молодым и свято верил в скалу и имплицыты пока не начал писать в проде вот такой вот код, абсолютно типичный для скалы:
public class MatchContainer implements StatsRegistry, LineupsRegistry, AreaRegistry, UserRegistry, TournamentRegistry, TicketRegistry, TableRegistry, ChatRegistry, BetRegistry, MatchEventRegistry, MatchReactor, ChatReactor, BetReactorThin, AreaReactor, TimeReactor { ... }
public class TournamentCollection implements TournamentRegistry, TicketRegistry, ChatRegistry, BetRegistry, TableRegistry, ChatReactor, BetReactorThin, MatchReactor, TimeReactor { ... }
Такое ФП нам и даром не надь и с деньгами не надь)


Igor
18.06.2017
19:51:11
Я когда то был молодым и свято верил в скалу и имплицыты пока не начал писать в проде вот такой вот код, абсолютно типичный для скалы:
public class MatchContainer implements StatsRegistry, LineupsRegistry, AreaRegistry, UserRegistry, TournamentRegistry, TicketRegistry, TableRegistry, ChatRegistry, BetRegistry, MatchEventRegistry, MatchReactor, ChatReactor, BetReactorThin, AreaReactor, TimeReactor { ... }
public class TournamentCollection implements TournamentRegistry, TicketRegistry, ChatRegistry, BetRegistry, TableRegistry, ChatReactor, BetReactorThin, MatchReactor, TimeReactor { ... }
Такое ФП нам и даром не надь и с деньгами не надь)
Я бы посмотрел как бы это выглядело бы на java/kotlin


Vasily
18.06.2017
19:56:13
Я когда то был молодым и свято верил в скалу и имплицыты пока не начал писать в проде вот такой вот код, абсолютно типичный для скалы:
public class MatchContainer implements StatsRegistry, LineupsRegistry, AreaRegistry, UserRegistry, TournamentRegistry, TicketRegistry, TableRegistry, ChatRegistry, BetRegistry, MatchEventRegistry, MatchReactor, ChatReactor, BetReactorThin, AreaReactor, TimeReactor { ... }
public class TournamentCollection implements TournamentRegistry, TicketRegistry, ChatRegistry, BetRegistry, TableRegistry, ChatReactor, BetReactorThin, MatchReactor, TimeReactor { ... }
Такое ФП нам и даром не надь и с деньгами не надь)
Напоминает не самый лучший ООП, скажем прямо. Аж DI повеяло


Pawel
18.06.2017
20:12:14
это фрагмент *как бы* обобщённого кода в языках с ad-hock полиморфизмом. В scala полно подобного и в документации. Почти все полезные фичи реализованы в виде системы типов - input/output типы, мутабельность и прочее, а либы представляют собой трэш из очень дженерик кода на трейтах. Меня смущает вот эта "нелокальность" языков, когда для того, чтобы понять происходящее, надо идти не в базовую либу, документацию и класс-предок, а облазить пол-интернета, кэши пакетных менеджеров, исходники либ на гитхабе и половину stackoverflow и гуглогрупп разработчиков языка


Igor
18.06.2017
20:24:45
Я когда то был молодым и свято верил в скалу и имплицыты пока не начал писать в проде вот такой вот код, абсолютно типичный для скалы:
public class MatchContainer implements StatsRegistry, LineupsRegistry, AreaRegistry, UserRegistry, TournamentRegistry, TicketRegistry, TableRegistry, ChatRegistry, BetRegistry, MatchEventRegistry, MatchReactor, ChatReactor, BetReactorThin, AreaReactor, TimeReactor { ... }
public class TournamentCollection implements TournamentRegistry, TicketRegistry, ChatRegistry, BetRegistry, TableRegistry, ChatReactor, BetReactorThin, MatchReactor, TimeReactor { ... }
Такое ФП нам и даром не надь и с деньгами не надь)
Я бы сказал что это обычный г##до джуна, который узнал много нового и полез применять.
Язык тут причем только тем что не ограничивает как java/kotlin.
Судя по scala чату, там ее используют на уровне c# и никто не пишет свои freemonad ?

Google

Nikolay
18.06.2017
20:40:33
Kotlin по сравнению с джавой конечно хорош)

Pavel
18.06.2017
20:51:24
Джава на стероидах, не более того

Astmatik
18.06.2017
21:25:08
во во

The mirror
19.06.2017
02:29:48
Очень часто обсуждают либы с паттернами функционального программирования, как раз со всякими монадами и функторами: cats, scalaz
Еще очень часто обсуждают программирование на макросах: scala meta и shapeless

Evgeniy
19.06.2017
05:11:00
Теперь это чат про Scala. :)

Pawel
19.06.2017
06:37:02
F# код недели!
https://www.reaktor.com/blog/building-roguelike-in-f/
Надо туда порталы запилить и рандомный лабиринт!

Vasily
19.06.2017
07:19:29

Pawel
19.06.2017
07:34:22
не, не понимаю

Evgeniy
19.06.2017
07:34:42

Nikolay
19.06.2017
07:35:23

Igor
19.06.2017
07:38:04

Vasily
19.06.2017
07:39:00
Было дело, да

Evgeniy
19.06.2017
09:22:17
Sergey Привет!

Roman
19.06.2017
09:34:15
Привет! Есть опыт в f#?
Некий магазин путешественников использует F#.
Вычитал тут (https://m.hh.ru/vacancy/21199481?utm_campaign=telegram-fsharp_chat&utm_content=telegram&utm_source=fsharp_chat )

Vasily
19.06.2017
09:41:54
"Для этого мы решили обновить команду разработчиков и в данный момент ищем джуниора на front-end." ОКАЙ

Roman
19.06.2017
09:42:39

Google

Vasily
19.06.2017
09:42:54
Это важно, да

Roman
19.06.2017
09:43:52
Целый магазин! Ты представляешь?! xD

Vasily
19.06.2017
09:44:17
Вроде они Пегасом раньше назывались

Anton
19.06.2017
09:44:24
О, пасибо за ссылку. Тоже проголосовал.
https://youtrack.jetbrains.com/issue/RIDER-7172

Vasily
19.06.2017
09:49:27
Кстати, есть какой-нить простецкий 2d движок с поддержкой f#?

Roman
19.06.2017
09:50:20
Ну или monogame вполне себе

Vasily
19.06.2017
09:50:44
Да мне под винду

Roman
19.06.2017
09:51:05
Моногейм и под виндой работает) и

Vasily
19.06.2017
09:51:10
https://github.com/bryanedds/Nu

Evgeniy
19.06.2017
09:52:43
Плюсую MonoGame.

Aminion
19.06.2017
09:53:28
8 Шарп? Можно спеку?

Evgeniy
19.06.2017
09:56:59
Aminion Я думаю, имелась в виду вот эта пачка пропозалов.
https://github.com/dotnet/csharplang/tree/master/proposals
Но давайте C# обсуждать в @CSharpChat. :)

Igor
19.06.2017
10:05:03

Evgeniy
19.06.2017
11:41:57
Я хочу странного. Написать что-нибудь на F# + Malmo. :)
https://github.com/Microsoft/malmo

Igor
19.06.2017
14:59:46
Как правильно считать строки из потока, пока не будет нужной строки?
Через while это получается хреново.

Daniel
19.06.2017
15:01:18