Voglio convertire questa riga di codice map (^?! ix 0) [[0, 1], [4, 5], [9, 1]]
per utilizzare interamente obiettivi, quindi qualcosa come [[0, 1], [4, 5], [9, 1]] & each . ix 0
. Tuttavia, i tipi non corrispondono. Qual è il modo corretto per farlo?Usa obiettivo come `mappa`
risposta
Uso folded
:
Prelude Control.Lens> [[0, 1], [4, 5], [9, 1]] ^.. folded . ix 0
[0,4,9]
Funziona su qualsiasi Foldable
.
Inoltre, se si pianifica di estrarre sempre il primo elemento, forse sarebbe più chiaro utilizzare l'attraversamento _head
da Control.Lens.Cons
anziché ix
.
[[0, 1], [4, 5], [9, 1]] ^.. folded . _head
È possibile utilizzare uno dei
Prelude Control.Lens> [[0, 1], [4, 5], [9, 1]] & each %~ (^?! ix 0)
[0,4,9]
Prelude Control.Lens> [[0, 1], [4, 5], [9, 1]] ^.. each . ix 0
[0,4,9]
Il primo corrisponde precisamente quello che hai scritto, utilizzando il pericoloso (^?!)
dell'operatore, il che significa che può dare un errore. Il secondo è più sicuro tralasciando le liste vuote.
Lavorano in modi diversi: il primo crea una versione modificata della struttura originale, che corrisponde più a ciò che fa map
e può essere utilizzata su strutture che non sono elenchi.
Il secondo crea un sommario dell'elenco della struttura utilizzando la piegatura dell'obiettivo fornita; sebbene possa essere utilizzato con molti tipi di strutture, il risultato è sempre un elenco.
È inoltre possibile sostituire each
per traverse
(o, come @danidiaz sottolinea, il leggermente più generale traversed
) in questo. Il primo funziona per molte cose speciali come le tuple, mentre il secondo funziona per qualsiasi Traversable
.
- 1. Scalaz: come comporre un obiettivo mappa con un obiettivo di valore?
- 2. Pulsante Elimina iOS - Obiettivo C
- 3. Obiettivo Base contro Obiettivo di distribuzione attivo
- 4. Obiettivo c - qualcosa come c?
- 5. Come si usa TTStyledTextLabel?
- 6. Copia NSView in cacao/obiettivo-c
- 7. Come inizializzare correttamente pigro Mappa della mappa della mappa?
- 8. Obiettivo C: Confrontando CGPoints
- 9. Come affermare Mappa contiene Mappa con voce
- 10. Maven, configurare obiettivo specifico
- 11. in c obiettivo
- 12. Test unitario: obiettivo fondamentale?
- 13. Obiettivo API Volunteermatch C
- 14. Posso passare delegato come parametro obiettivo-c
- 15. Come decodificare l'URL in iOS - Obiettivo C
- 16. Obiettivo C: Come convertire CGImageRef in UIImageView?
- 17. ggmap: dà un errore quando si usa la mappa stradale aperta come fonte
- 18. Come si usa la mappa con la funzione personalizzata in Octave?
- 19. corrispondenza obiettivo parola python
- 20. Ottenere obiettivo di Azione
- 21. Obiettivo C - Classe KeyValuePair?
- 22. Implementazione obiettivo-c Blowfish
- 23. Come associare un obiettivo del plug-in a un altro obiettivo del plug-in
- 24. Obiettivo C NSStack e NSQueue?
- 25. % segno nella stringa c obiettivo
- 26. Stampa array in obiettivo-c?
- 27. Obiettivo c - Indentazione del testo
- 28. Come si usa layoutIfNeeded?
- 29. Come si usa class_eval?
- 30. Come si usa cx_freeze?
Forse intendete "attraversato" da "Control.Lens.Traversal', invece di" traverse "? – danidiaz
@danidiaz No, intendo "traverse". Sebbene non sia * dall'obiettivo *, è considerato una parte essenziale di esso. –
@danidiaz Oh capisco, * entrambi * lavorano qui. Sembra "attraversato" è più generale, consentendo indici. –