Lazy List's mapWithIndex is not lazy

Offen
#218 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
48/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Veraltet
Bereich
backend

Rechercherichtung

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.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

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'))
Vorherrschende Sprache
PureScript
Sterne
61
Forks
50
Ø Merge
2 T. 6 Std.
Gemergte PRs (30 T.)
1

Entwicklungsumgebung

  • Kein Dockerfile und keine Docker-Compose-Datei
  • Hat eine Pull-Request-Vorlage
  • Kein Beitragsleitfaden

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus purescript/purescript-lists

Alle Issues in purescript/purescript-lists

Ähnliche Issues

Weitere Issues zu Backend & API Design

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.