Size: a a a

2020 August 11

AD

Aleksandr Drozdov in F# Chat
Странно, я вроде не писал туда часов 5
источник

Dv

Dr. Friedrich von Ne... in F# Chat
Я туда заглянул и пожалел, продукты распада ещё не выветрились.
источник

Dv

Dr. Friedrich von Ne... in F# Chat
Предлагаю пока что пару дней туда не заходить
источник

PD

Prunkles Dreemurr in F# Chat
Как можно этот ужас переписать, чтобы 1. работало быстро, 2. функционально и слегка декларативно?
gist
источник

В

Вячеслав in F# Chat
Prunkles Dreemurr
Как можно этот ужас переписать, чтобы 1. работало быстро, 2. функционально и слегка декларативно?
gist
Ну while наверное рекурсией можно заменить
источник

В

Вячеслав in F# Chat
И мутабельные вещи пихнуть в аргументы этой функции
источник

Г

Герман in F# Chat
тогда через fold
источник

PD

Prunkles Dreemurr in F# Chat
А прямое использовать энумератора?
источник

Г

Герман in F# Chat
Prunkles Dreemurr
А прямое использовать энумератора?
Seq.fold ...
источник

PD

Prunkles Dreemurr in F# Chat
Герман
тогда через fold
Так у меня же тут может в любой момент застопиться фолдинг
источник

Г

Герман in F# Chat
а, хм
источник

Г

Герман in F# Chat
2 можно через continuation-passing, но быстро не будет)
источник

Г

Герман in F# Chat
Prunkles Dreemurr
А прямое использовать энумератора?
ну или let rec loop acc eblocks = ...
источник

Г

Герман in F# Chat
и там чекать Seq.isEmpty
источник

PD

Prunkles Dreemurr in F# Chat
А при рекурсии стоит ли передавать энумератор аргументом, или оставить его во внешнем скоупе?
источник

VS

Vladimir Shchur in F# Chat
Prunkles Dreemurr
Как можно этот ужас переписать, чтобы 1. работало быстро, 2. функционально и слегка декларативно?
gist
я недавно ChunkBySize эффективно перепиливал, до сих пор горжусь) основной смысл, что вместо того чтобы кучу массивов создавать, можно коллекцию по-оконно обходить, чтобы парсер кусками читал без создания доп массивов
источник

VS

Vladimir Shchur in F# Chat
Вот пример, там куски по 8 байт парсил в лонги (изначально это на чанк бай сайз было написано https://github.com/fsharplang-ru/pulsar-client-dotnet/blob/2.6.0-support/src/Pulsar.Client/Common/Tools.fs#L111
источник

Г

Герман in F# Chat
Prunkles Dreemurr
А при рекурсии стоит ли передавать энумератор аргументом, или оставить его во внешнем скоупе?
можно обойтись без энумератора через Seq.head/Seq.tail/Seq.isEmpty
источник

Г

Герман in F# Chat
но это по перфу тоже плохо наверно будет
источник

PD

Prunkles Dreemurr in F# Chat
Спасибо, посмотрю
источник