@Fsharp_chat

Страница 211 из 772
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
Можно сделать быстрее (с thread static random'ом, избавляемся от лока)
Да можно, но хочется коротко, а не быстро (там не будет контеншена, это я так перестраховываюсь). Насчет RNGCryptoServiceProvider, нет там ничего секьюрного.

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

Friedrich
18.06.2017
15:51:59
И вообще (никак не нагуглю), как правильно работать с мутабельным статическим полем с учетом многоточности. Реально вот так http://fssnip.net/1V надо эмулировать атомарные переменный (типа clojure atom)?
Ну а про атомарные переменные — да, если тебе отдельно нужна такая переменная, то эмулируется примерно так. Я уж прям подробно не стал вчитываться, но в целом реализация выглядит нормально. В реальности я ни разу не сталкивался с нуждой пользоваться именно такой отдельной переменной (да и атомами в кложуре, коли уж на то пошло — а вот на акторах там что-то писал).

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

Friedrich
18.06.2017
15:52:40
разве что выкинуть locker и лочить на сам rand
Тогда твоя реализация рассчитывает, что сам Random не делает нигде lock(this), а это считается дурным тоном.

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

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

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

Что можно лучше тут сделать? :)

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
Народ можно это проще переписать? Мне нужны рандомные числа (в заданном диапазоне), с поддержкой канкаренси. let private makePincode = let rand = Random() let locker = obj() fun () -> lock locker (fun () -> rand.Next(1000, 9999).ToString())
let threadSafeRand : Async<int> = let rand = Random() let agent = MailboxProcessor<AsyncReplyChannel<int>>.Start( fun inbox -> let rec messageLoop() = async{ let! reply = inbox.Receive() rand.Next(1000, 9999) |> reply.Reply return! messageLoop() } messageLoop() ) agent.PostAndAsyncReply (fun replyChannel -> replyChannel)

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
Ребята, сориентируйте, а что в довесок к фп на сервере, юзать на фронте? Язык и фреймворк для SPA
всё плохо, но меньше всего боли в elm. С вариантом Fable + React я лично вижу 3 проблемы - 1) на самом деле это Fable + React + redux + react-redux + react-redux-router + тонны г-на и палок из npm 2) React 3) Redux.

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 А прошлые его посты видел?

Какие можно сделать выводы?
Я сделал вывод только для себя. Обязательно потрачу время на Kotlin в ближайшем будущем. :)

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
ну знаешь ли.. я вот сейчас anko курю. в C# подобного и близко нет, потому что лямбды не могут быть расширениями класса
Одерски обещал что в Dotty можно будет так же. Да и в anko, как с любыми DSL, вечная проблема с кастомные/стороними и контролами

И не надо забывать что котлин ооп языке. В котлин чате постоянно задают вопросы "зачем нужны 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 { ... } Такое ФП нам и даром не надь и с деньгами не надь)

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

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/ Надо туда порталы запилить и рандомный лабиринт!

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

Igor
19.06.2017
07:38:04
И на MonoGame переписать. :) https://github.com/Thraka/SadConsole
Эх, какие ламповые были квесты от сиерры ?

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
8 Шарп? Можно спеку?
Все вкусности https://youtu.be/KFqrp4KSxio

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

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

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