Feature request: Set.traverse
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia esaminando il comportamento esistente di Set.map e le implementazioni proposte di toList/fromList e foldMap. Confronta la loro semantica e le loro caratteristiche asintotiche o di altro tipo relative alle prestazioni, quindi determina il design vincolato accettato per Set.traverse. Il lavoro è completato quando il progetto ha concordato un’implementazione e il comportamento corrispondente è stato validato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
We can’t have a Traversable instance for Set, but there’s no reason we can’t have a constrained traverse just like we have Set.map even tho we can’t have Functor either. My initial attempt uses toList/fromList:
traverse :: (Ord b, Applicative f) => (a -> f b) -> Set a -> f (Set b)
traverse f = fmap fromList . Prelude.traverse f . toList
When I asked around on Twitter, @chris-martin came up with this variant:
traverse f = foldMap (fmap singleton . f)
which requires an extra Monoid (f a) constraint, but the latter was resolved by Liam Goodacre:
traverse f = getAp . foldMap (Ap . singleton . f)
I haven’t thought too hard about the asymptotics or other performance characteristics here, and there may well be better implementations possible, but it was certainly a fun thought experiment! What do folks think about adding a traverse for Set?
- Lingua principale
- Haskell
- Stelle
- 356
- Fork
- 196
- Merge medio
- 3g 22h
- PR unite (30g)
- 1
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di haskell/containers
-
unfoldTree is too lazyApertamajor-release strictness Tree
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
haskell/containers#1260 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
haskell/containers#1265 ·
-
Map performance Set
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
haskell/containers#1263 · 5 commenti ·
-
low-hanging-fruit performance Seq
Difficoltà 4/5 3-5 giorni Idoneità per principianti 43/100
haskell/containers#1262 · 2 commenti ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
haskell/containers#1261 · 11 commenti ·
Tutte le issue di haskell/containers
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
enhancement triage
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 77/100
simplex-chat/simplex-chat#7781 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 1/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 1 giorno
-
Build error?Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
lolepezy/rpki-prover#367 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
run-peras-testnet traps ^C when running the cleanup trapForse già presa @isovector l’ha presa 1 giorno fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
tweag/cardano-kosmos#35 ·
I maintainer di solito rispondono entro 1 giorno