@Fsharp_chat

Страница 747 из 772
Siarhei
09.10.2018
12:13:44
если точнее

Kirill
09.10.2018
12:26:52
Всем привет! Скажите пожалуйста: почему элементы в массиве mutable, а в списке нет?
Потому что массив — это коллекция ссылок, а список — значений

Paul
09.10.2018
12:31:56
Спасибо!

Anton
09.10.2018
12:37:03
а в некоторый языках .* это будет значит матричное умножение
Но у нас то F#, где ** возведение в степень.

Google
Andrew
09.10.2018
12:52:26
Александр
09.10.2018
13:16:01
Я не шутил

Каждая формула, которую я видел делает меня страдать. Хуже матиматиков переменные называют только физики

Ayrat
09.10.2018
13:18:09
ладно переменные, но вот выдумывание новых операторов - это кажется специальная олимпиада

Ayrat
09.10.2018
13:18:45
^fun
ну это-то нормально!!1

:D

Grigoriy
09.10.2018
13:19:25
ну это-то нормально!!1
да никто и не сомневался :)

почему-то Кшиштоф называл >=> ракетой

хотя опрос в твиторе со мной согласился, что это - рыба :)

|>(+)<|

красота же!

Ayrat
09.10.2018
13:22:04
почему-то Кшиштоф называл >=> ракетой
а вообще это называется стрелочка Кляйзли

Google
Ayrat
09.10.2018
13:22:17
https://elvishjerricco.github.io/2016/10/12/kleisli-functors.html

Grigoriy
09.10.2018
13:23:21
Обожи!

Your search - стрелочка Кляйзли - did not match any documents.

Ayrat
09.10.2018
13:24:17
Your search - стрелочка Кляйзли - did not match any documents.
на русском вообще тяжело найти что-то адекватное)

Alexey
09.10.2018
13:25:28
Ayrat : ну дык ты ж послал

Ayrat
09.10.2018
13:25:48
Ayrat : ну дык ты ж послал
надо гуглить Kleisli arrow

я-то сразу перевёл

Alexey
09.10.2018
13:26:21
вторая ссылка - про стрелки в хаскеле...

Ayrat
09.10.2018
13:26:41
Хаскель задаёт тон операторному безумию в ФП

иначе бы совсем распоясались

>=> в гопачке и в жирафе кстати соответствуют композиции кляйзли: (a -> M<b>) -> (b -> M<c>) -> (a -> M<c>) в гопаке оно композирует джобофункции, которые принимают обычные аргументы, а возвращают джобы А в жирафе это хендлеры все, они принимают контекст запроса, возвращают Task<option context> или как-то так

A64m
09.10.2018
13:34:30
хаскелисты чаще "рыбкой" называют, а не ракетой (и в тайпклассопедии так)

Grigoriy
09.10.2018
13:38:58
накрайняк - торпеда

Привет!

Serg
09.10.2018
14:41:05
Пронто)

Grigoriy
09.10.2018
14:42:29
Пронто)
Полиглот?

Roman
09.10.2018
15:07:15
https://demystifyfp.gitbook.io/fstoolkit-errorhandling

Grigoriy
09.10.2018
15:16:26
о! надо придумать теперь, как это с Fable2 и его Thoth.Json поженить

Serg
09.10.2018
15:38:47
Полиглот?
Нет, но слова интересные запоминаю)

Google
Roman
09.10.2018
16:02:06
https://github.com/dotnet/infer/tree/master/src/FSharpWrapper

Alexandr
09.10.2018
16:38:02


Grigoriy
09.10.2018
16:38:57
Порядок файлов в проекте имеет значение

Roman
09.10.2018
16:38:58
Текст ошибки)

Grigoriy
09.10.2018
16:39:19
Тебе тут говорят, что файл Program.fs должен быть последним

Alexandr
09.10.2018
16:39:57
Тебе тут говорят, что файл Program.fs должен быть последним
а как это сделать? я в f# только начал осваиваться. перехожу с c#

Roman
09.10.2018
16:40:14
В дереве проекта

Или посмотри в контекстном меню файла есть хоткеи

Grigoriy
09.10.2018
16:41:24
в контестном меню файла в солюшен эксплорере есть пункты Up/Down

Alexandr
09.10.2018
16:44:10
в контестном меню файла в солюшен эксплорере есть пункты Up/Down
Благодарю! Разобрался... даже не подумал что могло влиять

Vasily
09.10.2018
16:44:32
а как это сделать? я в f# только начал осваиваться. перехожу с c#
Тебя ждёт множество удивительных открытий. И закрытий

Grigoriy
09.10.2018
16:44:53
Хелп!

Может кто делал такую штуку - есть seq<Async<Result<...>> хочу |> Async.Parallel но не более N одновременных

Ayrat
09.10.2018
16:47:06
я делал

Grigoriy
09.10.2018
16:47:12
начал blocking queue в середину пихуить...

Vasily
09.10.2018
16:47:19
Partition небось

Google
Ayrat
09.10.2018
16:47:32
короче есть два способа. быстрый и плохой и хороший и чуть долгий

Vasily
09.10.2018
16:47:32
Точнее chunks

Grigoriy
09.10.2018
16:47:33
Партишон делит на 2

Ayrat
09.10.2018
16:47:36
быстрый и плохой - чанками

Grigoriy
09.10.2018
16:47:39
Чанки сделал

Но это не оптимально

Ayrat
09.10.2018
16:48:44
хороший - сделать N рекурсивных функций каждая из которых бы тягала работу их синхроннизированного источника и терминировалась когда источник пуст. На гопаке такое сделать - пара строчек

Grigoriy
09.10.2018
16:48:51
допустим N = 10. 9 отработали, а 1 - всё продолжает

и мы его ждём

Ayrat
09.10.2018
16:49:14
дадада, поэтому стартуй N воркеров (рекурсивных функций)

начало функции проверка некого синхронного источника на наличие работы. Если нет - терминируем рекурсию. если есть, синхронно забираем, работаем. Рекуримся

гопаком проще, т.к. там ченелы и вообще все общение синхронное, с комитами. Поэтому проверять один ченел из N воркеров и отдавать только одному работу - не проблема

Grigoriy
09.10.2018
16:52:26
погедь с гопаком :) я пытаюсь асинки прочувствовать

илдить в выходной сиквенс?

Vasily
09.10.2018
16:54:33
Ну есть ещё вариант

Grigoriy
09.10.2018
16:54:40
Внемлю!

Vasily
09.10.2018
16:55:01
Каждые n async заворачивать в async

Ayrat
09.10.2018
16:55:25
а результат каждой операции - куда?
В гопаке в выходящий ченел) ща, ребенка искупаю, дам оба варианта. У меня и гопак, и асинк есть снипеты

Grigoriy
09.10.2018
16:56:04
Google
Grigoriy
09.10.2018
16:56:18
Directory.GetFiles(source) |> Seq.filter filterFn |> Seq.map (fun f -> async { use file = File.OpenRead(f) return! this.UploadFile(drive, Path.Combine(target, Path.GetFileName(f)), file) }) |> Array.ofSeq |> chunk 10 |> Seq.map (fun c -> c |> Async.Parallel |> Async.RunSynchronously) |> Array.concat

Vasily
09.10.2018
16:57:39
Вот перед seq.map по идее можно вставить chunk

Grigoriy
09.10.2018
16:58:15
он там есть - только подальше на шаг

Vasily
09.10.2018
16:58:50
Ну, возможно, надо наоборот

Grigoriy
09.10.2018
16:58:58
не влияет

Vasily
09.10.2018
16:59:03
Сначала чанки

Grigoriy
09.10.2018
16:59:08
они ж холодные

Vasily
09.10.2018
16:59:13
Потом мапить в асинки

И как startchild

Grigoriy
09.10.2018
17:00:55
я, вот, думаю, мож AsyncSeq тут поможет

Ayrat
09.10.2018
17:02:26
я, вот, думаю, мож AsyncSeq тут поможет
Да я ж тебе дал решение!

Grigoriy
09.10.2018
17:02:51
я не могу сообразить как результат отдавать :(

Ayrat
09.10.2018
17:02:52
Асинксек по-моему тоже чанкает

Roman
09.10.2018
17:02:58
https://github.com/dotnet/infer/tree/master/src/FSharpWrapper
https://dotnet.github.io/infer/userguide/FSharp%20Wrapper.html

Ayrat
09.10.2018
17:03:12
Там есть параллельная итерация

Grigoriy
09.10.2018
17:04:22
Асинксек по-моему тоже чанкает
AsyncSeq.groupBy partitions the input sequence into sub-sequences based on a key returned by a projection function.

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