
Friedrich
28.04.2018
15:06:56
Ну то есть оно, может, и более логично (синхронная часть таски всегда работает синхронно), но несколько неожиданно.

Roman
28.04.2018
15:07:42

Vladimir
28.04.2018
15:08:43
task { dosmth() } |> Task.Run - так не работает

Friedrich
28.04.2018
15:08:55
Синхронная часть всегда работала синхронно и в c#
Нет, смотри вот два куска кода:
let t1 = task { dumpThread "f1" }
let t2 = System.Threading.Tasks.Task.Run(fun () -> dumpThread "TaskRun")
Вернёт такое:
f1: thread 1 // это главный тред, т.е. работаем синхронно
TaskRun: thread 2 // работаем в пуле

Google

Friedrich
28.04.2018
15:10:05

Roman
28.04.2018
15:10:12
вот аналог, насколкьо я понял.
Вполне логично что в текущем треде запускается

Friedrich
28.04.2018
15:10:54

Roman
28.04.2018
15:12:12

Vladimir
28.04.2018
15:12:13

Roman
28.04.2018
15:12:22
а у task есть методы?

Friedrich
28.04.2018
15:12:49
Смотри, тут у тебя не работает потому, что там не та перегрузка
Ты хочешь, грубо говоря, F#-аналог такого C#-кода:
Task.Run(() => f3())

Vladimir
28.04.2018
15:13:38
да, я уже нахимичил, но работает все равно как-то не так

Friedrich
28.04.2018
15:13:43
В F# это можно написать так:
Task.Run<int>(fun () -> f3())

Google

Friedrich
28.04.2018
15:13:57
(аннотация типа обязательна, иначе он не компилится)

Vladimir
28.04.2018
15:14:11
let tempTask = task { Thread.Sleep(4000) }
let goodTask = Task.Run(fun () -> tempTask :> Task)

Friedrich
28.04.2018
15:14:33
(если кто запамятовал, в C# реально есть перегрузка Run(Func<Task<T>>))

Roman
28.04.2018
15:15:16

Friedrich
28.04.2018
15:15:45
К сожалению, от аннотации никак не избавиться, но это уже красиво.

Roman
28.04.2018
15:16:12
слава бгу, я думал там они прсят как-то expression зачем-то
f3 |> Task.Run<int>

Friedrich
28.04.2018
15:17:09
Надо именно с функцией
Или на асинках.
Щас покажу как.

Vladimir
28.04.2018
15:17:42
это я симулирую длинный метод

Friedrich
28.04.2018
15:17:54

Vladimir
28.04.2018
15:18:06
да, плохо получается)

Friedrich
28.04.2018
15:18:11
И потом в Task.Run ты передаёшь лямбду, которая возвращает уже завершённый таск

Vladimir
28.04.2018
15:20:33
все, получилось
let tempTask() = task { Thread.Sleep(4000) }
let goodTask = Task.Run<unit>(tempTask)

Friedrich
28.04.2018
15:21:56
let doWork = async {
dumpThread "inside"
Thread.Sleep 5000
return 5000
}
let poolizer (t : Async<'a>) = async {
dumpThread "before"
do! Async.SwitchToThreadPool()
dumpThread "after"
return! t
}
poolizer doWork |> Async.StartAsTask
результат:
before: thread 3
after: thread 4
inside: thread 4

Google

Friedrich
28.04.2018
15:22:50
Хотя на самом деле хватает уже Async.StartAsTask doWork

Evgeniy
28.04.2018
15:27:00
Привет.

Roman
28.04.2018
15:27:08

Evgeniy
28.04.2018
15:32:42
Вы же в курсе, что там @cartermp пишет стайл гайд для F#?
Он местами смешной, поэтому предлагаю поучаствовать в ревью.
https://github.com/dotnet/docs/pull/4916

Friedrich
28.04.2018
15:36:26
Смешной или нет, а Филипп в итоге сделает хорошо, я верю :)

Evgeniy
28.04.2018
15:37:18
Да, он с инженерами в Jet много общался, в частности с Царьпалисом.

Friedrich
28.04.2018
15:37:38
Царьпалис и ревьювит же сейчас, да?

Evgeniy
28.04.2018
15:39:31
Угу.

Friedrich
28.04.2018
15:42:02
Ну ок, я им там начал заливать.

Evgeniy
28.04.2018
15:42:07
К другим новостям. Тут FSharpPlus 1.0.0 зарелизился, теперь-то F# точно готов к продакшену. ?
https://twitter.com/ozzymcduff/status/990127173905403904

Friedrich
28.04.2018
15:42:29
?
(не использую эту библиотеку, но дело всё равно хорошее)

Evgeniy
28.04.2018
15:53:32
Им документации не хватает, правда. :)

Friedrich
28.04.2018
15:54:16

Evgeniy
28.04.2018
15:58:29
У них есть тесты какие-то.
https://github.com/gusty/FSharpPlus/blob/master/tests/FSharpPlus.Tests/General.fs#L821-L841
</catch/> выглядит потешно. Ну, вы поняли, да, они определили операторы </ и />.
Интересно, насколько использование F#+ увеличивает время компиляции... ?

Sergey
28.04.2018
16:56:47
@nevoroman не пропусти https://twitter.com/FableCompiler/status/989455305066057728

Roman
28.04.2018
17:48:02

Google

Evgeniy
28.04.2018
18:00:57
https://twitter.com/sergey_tihon/status/990285256300400640

Roman
29.04.2018
14:20:23

Friedrich
29.04.2018
14:24:24
Это перебор, бро. Вопрос-то по C#. С этим обсуждением перекатываемся в @DotNetRuChat.

Roman
29.04.2018
14:46:09
https://github.com/fsharp/community.fsharp.org/pull/86

Friedrich
29.04.2018
14:51:55

Alexander
29.04.2018
18:27:34

Mr.
29.04.2018
19:05:19
Вопрос эстетический. Метод isDeterminated() определяет, вырожденная ли матрица, или нет. У вырожденной матрицы определитель равен нулю, но определитель имеет только квадратная матрица. Если методу isDeterminated() передать неквадратную матрицу, то он должен возвратить false, или сгенерировать исключение?

Roman
29.04.2018
19:11:13

Evgeniy
29.04.2018
19:17:35
Возвращать, конечно, Result<bool, err>. Никаких исключений.

Mr.
29.04.2018
19:18:46
Гугл переводчик мне перевёл на isDeterminated. isSingular() - будет путаница с сингулярными значениями матрицы, сингулярным разложением и т п

Evgeniy
29.04.2018
19:19:45
Путаницы не будет, если пользоваться правильной терминологией.
https://twitter.com/SuaveIO/status/990676448506761217
Ну, допиливают немного.
https://github.com/Microsoft/visualfsharp/pull/4798
Мне кажется, следующий релиз F# опять будет скромным, с мелкими фичами.

Vlad
30.04.2018
09:01:31

Evgeniy
30.04.2018
09:11:04
Но его, кажется, смогли переубедить.

Roman
30.04.2018
09:11:29
Скандалы интриги расследования

Google

Evgeniy
30.04.2018
09:13:08
Сейчас только три RFC реализованы для F#4.5 — анонимные записи, match! и вот этот про — DU и flexible types.
Я очень надеюсь на продолждение работы над SRTP.
https://github.com/Microsoft/visualfsharp/pull/3582

Vlad
30.04.2018
09:29:09

Evgeniy
30.04.2018
09:36:28

Roman
30.04.2018
17:10:21

Evgeniy
30.04.2018
17:11:24
Merged
Мы теперь официальные? :)

Roman
30.04.2018
17:16:16

Friedrich
01.05.2018
14:53:26
Чуваки. Как отформатировать?
type Point<'T> = Point of x : 'T * y : 'T * z : 'T
vs
type Point<'T> = Point of x:'T * y:'T * z:'T

Дед Пегас
01.05.2018
14:53:58
Я за первый, ИМХО.

Friedrich
01.05.2018
14:54:43
Его сложнее прочитать, хотя я тоже к нему склоняюсь.

Vladimir
01.05.2018
14:59:55
2

Anna
01.05.2018
15:00:38
Я тоже за 2

Evgeniy
01.05.2018
15:01:47

Friedrich
01.05.2018
15:02:14
Хотя можно активный шаблон присобачить.