Lazy List's mapWithIndex is not lazy

Aberta
#218 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
48/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Estagnada
Domínio
backend

Direção de pesquisa

Start in src/Data/List/Lazy/Types.purs at the linked FunctorWithIndex instance around line 116. Compare its folding implementation with the lazy Functor implementation, then check how the proposed recursive mapping handles the list one step at a time. Done means mapWithIndex preserves laziness while supplying each element’s index; the issue provides no test file to run.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

https://github.com/purescript/purescript-lists/blob/b113451e5b41cad87d669a3165f955c71cd863e2/src/Data/List/Lazy/Types.purs#L116

The implementation of FunctorWithIndex for Lazy List uses folding, which, unlike Functor, is not lazy.

It should be:

instance functorWithIndexList :: FunctorWithIndex Int List where
  mapWithIndex f xs = List (go 0 <$> unwrap xs)
    where
    go i = \step -> case step of
      Nil -> Nil
      Cons x xs' -> Cons (f i x) (List (go (i + 1) <$> unwrap xs'))
Linguagem predominante
PureScript
Estrelas
61
Forks
50
Merge médio
2d 6h
PRs com merge (30d)
1

Preparar o ambiente

  • Sem Dockerfile nem arquivo Docker Compose
  • Tem um modelo de pull request
  • Sem guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de purescript/purescript-lists

Todas as issues de purescript/purescript-lists

Issues semelhantes

Mais issues de Backend & API Design

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.