haskell / haskell/parallel

Can an extra operation help explain things?

Offen
#39 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Haskell
Sterne
98
Forks
24
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

```haskell
appEval :: forall a (b :: TYPE rep).
(a -> b) -> Eval a -> b
appEval f (Eval (IO m)) =
case runRW# m of
(# _, a #) -> f a
```

Ignoring levity polymorphism, this could be implemented

```haskell
appEval f m = runEval (f <$> m)
```

Moreover,

```haskell
runEval = appEval id
```

But what makes this interesting, I think, is its relationship with `>>=`: aside from arity wibbles,

```haskell
m >>= f = appEval f m
```

This strikes me as a really pleasant property.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne mit der Überprüfung der bestehenden Definitionen von Eval, runEval und appEval sowie der im Issue beschriebenen Beziehung zu >>=. Bestimme, ob die vorgeschlagene Operation eine konkrete API-Rolle hat und wie ihre Semantik validiert würde; als erledigt gilt die Aufgabe, wenn ein abgestimmtes Design mit entsprechenden Tests oder entsprechender Dokumentation vorliegt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
haskell
Bereich
distributed-systems
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

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