Can an extra operation help explain things?
- 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