Tail recursion for TaskSeq
Mantenedores costumam responder em até 3 dias
Ninguém assumiu esta issue ainda.
- #310 de @github-actions — fechado sem integrar
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 25/100
- Tipo de issue
- Funcionalidade
- Clareza
- Precisa de esclarecimento
- Status de atividade
- Pouca atividade
- Stack de tecnologia
- fsharp
- Domínio
- backend-api-design
Direção de pesquisa
Comece pelo exemplo asyncSeq recursivo de cauda na issue e compare seu uso pretendido com taskSeq e yield!. A issue não nomeia arquivos-fonte nem testes e não define um design aceito ou critérios de conclusão; eles precisariam ser estabelecidos antes da implementação.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
We've removed the tail recursion because it was hard to consolidate it into yield! (it was instead done with return!, which has no place in taskSeq).
However, today I helped someone with some code that he considered for taskSeq which had the following approach:
let getPoliciesAsync policyid =
asyncSeq{
use connection = new NpgsqlConnection(npgsqlConnectionStringBuilder.ConnectionString)
use command = new NpgsqlCommand($"SELECT policy_data FROM policy.tbl_policy where policy_id = {Sql.uuid policyid};", connection)
let! reader = command.ExecuteReaderAsync() |> Async.AwaitTask
let rec someRec() = asyncSeq{
let! rowExists = reader.ReadAsync() |> Async.AwaitTask
if rowExists then
yield {| dt1 = reader.GetString(0) |}
yield! someRec()
}
yield! someRec()
} |> AsyncSeq.toAsyncEnum
As you can see, it uses asyncSeq, but also: it is recursive. The same approach with taskSeq would likely be more performant, however, if there are a lot of rows, this becomes problematic. This code can be rewritten with a loop, though.
@dsyme, sharing this with you in case we want to revisit this at some point.
- Linguagem predominante
- F#
- Estrelas
- 111
- Forks
- 13
- Merge médio
- 2d 2h
- PRs com merge (30d)
- 1
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de fsprojects/FSharp.Control.TaskSeq
-
agentic-workflows automation repo-assist
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
fsprojects/FSharp.Control.TaskSeq#463 ·
Mantenedores costumam responder em até 3 dias
-
agentic-workflows automation repo-assist
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 35/100
fsprojects/FSharp.Control.TaskSeq#476 · 1 comentário ·
Mantenedores costumam responder em até 3 dias
-
bug
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
fsprojects/FSharp.Control.TaskSeq#473 · 2 comentários · 1 reação ·
Mantenedores costumam responder em até 3 dias
-
automation enhancement repo-assist
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 10/100
fsprojects/FSharp.Control.TaskSeq#471 ·
Mantenedores costumam responder em até 3 dias
-
enhancement needs triage
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 45/100
fsprojects/FSharp.Control.TaskSeq#466 · 1 comentário ·
Mantenedores costumam responder em até 3 dias
Todas as issues de fsprojects/FSharp.Control.TaskSeq
Issues semelhantes
-
layer.setProps: opacity above 1 is clamped silently (layerStyle uses 0..100)Talvez já em andamento @switch87 assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 66/100
storytold/photocraft#5242 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
pinterest/pymemcache#662 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
-
[Enhancement]: Add Cheaper Inference to known custom endpoint providersTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta✨ enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
LibreChat-AI/LibreChat#17075 ·
Mantenedores costumam responder em até 1 dia