
Dmitry
11.06.2018
20:31:01

Evgeniy
11.06.2018
21:13:34

Klei
11.06.2018
21:14:23

Evgeniy
11.06.2018
21:14:31

Google

Klei
11.06.2018
21:56:26
А, еще меня чет дернуло пощупать на возможность перевода, общий вывод: за основу надо брать F# версию.

Friedrich
12.06.2018
02:14:20

Evgeniy
12.06.2018
06:48:45
Привет.

Mikhail
12.06.2018
09:50:50

Friedrich
12.06.2018
09:52:43
Я согласен, что, вероятно, можно как-то за уши притянуть такую же семантику к F#, но не уверен, что это очень уж практичная идея, и какие из такого определения могут быть конструктивные выводы.
(при этом я, заметьте, не утверждаю, что та или иная семантика чем-то «лучше» другой — они просто разные)

Mikhail
12.06.2018
09:59:01

Friedrich
12.06.2018
09:59:14
Ну и ещё unsafePerformIO, но это хак :)

Mikhail
12.06.2018
09:59:40
А в Фшарпе в любом месте?

Friedrich
12.06.2018
09:59:49
Ну, типа да.

Google

Friedrich
12.06.2018
10:00:33
Написал printf "xxx" — и у тебя в stdout вывелась строчка. Не зашедулился какой-то там экшен, а натурально выполнился побочный эффект. Если ты не пишешь это внутри какого-нибудь хитрого computation expression.

Mikhail
12.06.2018
10:01:48
Ну, типа да.
Т.е., если обвернуть все IO функции в стандартной библиотеке во что то, то можно реализовать такую же (почти) единую точку контакта с рантаймом и в Фшарпе?
Теоретически

Friedrich
12.06.2018
10:01:57
Да, можно.
Скалисты таким увлекаются и строгают штуки типа scalaz и cats. При работе с этими либами предлагается побочные эффекты всячески заворачивать. А выше давали пример, как в F# при работе с Elmish делается то же самое.

Mikhail
12.06.2018
10:04:06
Получается, что чистая функция может принимать функцию с побочными эффектами
Если она ее не вызывает
Так ведь?

Friedrich
12.06.2018
10:04:31

Mikhail
12.06.2018
10:05:01
Начал что то понимать, благодарю за объяснение!

Jey
12.06.2018
15:58:07
Кстати, полезно ещё различать эффект и аффект

Iskander
12.06.2018
16:15:47
Наконец руки дошли до изучения f#, ещё с февраля думал почитать да посмотреть
Пока только начал разбираться, что есть let, но уже определенно нравится
Начал с книги The F# Book, кто-нибудь читал ?)

Evgeniy
12.06.2018
16:41:57
Привет.

Rustem
12.06.2018
16:42:03
Привет.

Evgeniy
12.06.2018
17:05:38

Dmitry
12.06.2018
17:37:11

Evgeniy
12.06.2018
18:42:24
@Kleidemos А как мне mailbox.Sender () типизировать?

Google

Rustem
12.06.2018
18:43:49
как сделать рандомный массив от -100 до 100
и размером до 100 элементов?

Klei
12.06.2018
18:43:54

Rustem
12.06.2018
18:46:07
ок, спасиб
просто для тестов надо
а самому придумывать лень

Klei
12.06.2018
18:46:36
Ты там FsCheck не переизобрети.

Rustem
12.06.2018
18:46:49
)))

Evgeniy
12.06.2018
18:49:00

Klei
12.06.2018
18:49:37

Rustem
12.06.2018
18:55:20

Klei
12.06.2018
18:56:05
А рандом откуда брал?

Rustem
12.06.2018
18:56:16
System

Klei
12.06.2018
18:56:29
Я имею ввиду, где он был создан.
Выглядит так, будто ты его при каждом вызове генеришь.

Rustem
12.06.2018
18:56:44
в каждой итерации

Klei
12.06.2018
18:56:59
Рандом зависит от времени.

Rustem
12.06.2018
18:57:23

Klei
12.06.2018
18:57:45
Если не планируешь вызывать функции много раз, то просто
(let rnd = new ...
fun _ -> rnd.Next ...)

Google

Klei
12.06.2018
18:58:06
Если надо несколько рандомных массивов, то объяви rnd еще выше.

Rustem
12.06.2018
18:58:18
ок

Evgeniy
12.06.2018
18:59:03

Klei
12.06.2018
18:59:13
В последнем случае судя по моему опыту, скорее всего тебе придется создать некий модуль Urils, и запихнуть в него rnd.

Rustem
12.06.2018
18:59:38

Klei
12.06.2018
18:59:43
Да. Создавай до for.

Evgeniy
12.06.2018
19:00:21

Rustem
12.06.2018
19:00:49

Evgeniy
12.06.2018
19:12:26
@Kleidemos Наверное, можно попробовать снаружи параметризовать обработчик нужным типом.
Я забываю периодически, что у нас обычные функции. :)

Klei
12.06.2018
19:30:12

Evgeniy
12.06.2018
19:57:14
@Kleidemos
https://github.com/Horusiath/Akkling/issues/1

Igor
12.06.2018
20:06:04
А в F# есть способо преврать
() -> Task<T>
в Async<T>?
Я пока не вижу изкоробочного.

Vlad
12.06.2018
20:06:38

Igor
12.06.2018
20:06:38
Async.AwaitTask
не множко не про то, но НЕ пересоздаст Task

Vlad
12.06.2018
20:10:16

Igor
12.06.2018
20:13:56
Ну я думал, что
Async<T> ~= () -> Task<T>
те Async по факту и есть лямбда, которая возращает фьючу.
По этому Async<T> ленивый и его можно несколько раз запускать.
Async.AwaitTask просто заворачивает Task в лямду, НО тк Task<T> одноразовый, то и результирующий Async<T> будет каждый раз возвращть одно и тоже.

Evgeniy
12.06.2018
20:14:59

Google

Vlad
12.06.2018
20:15:05
запутал ты меня если честно

Igor
12.06.2018
20:15:30
Ну в общем да, просто завернул все в async {}

システム
13.06.2018
09:00:22
Hi guys,
Maybe someone is here https://ndcoslo.com ?
Or maybe someone does have interesting questions to speakers which I could pass.
Don S is gonna be here, as well as Mathias B and Scott W

Roman
13.06.2018
09:02:20

システム
13.06.2018
09:11:56
https://ndcoslo.com/talk/the-f-path-to-relaxation/