Option
monad diventa praticamente una struttura alcune volte in Scala. Ci sono altre monadi nella libreria standard di Scala?Quali sono le monadi Scala standard diverse da Opzione?
risposta
È possibile risolvere questo problema cercando la spia flatMap
nello API index. Dà:
FilterMonadic
Stream
StreamWithFilter
TraversableMethods
Iterator
ParIterableLike
ParIterableLike
ParIterableViewLike
TraversableLike
WithFilter
MonadOps
TraversableProxyLike
TraversableViewLike
LeftProjection
RightProjection
Option
WithFilter
Responder
Zipped
ControlContext
Parser
La risposta di Luigi è corretta, ma non molto informativa, IMHO.
Tutte le raccolte possono implementare l'interfaccia di monad, ma la firma per flatMap
in esse non è una flatmap di monade. Però si comportano come monadi la maggior parte del tempo. Quasi tutte le classi elencate da Luigi sono legate alle collezioni.
LeftProject
e RightProject
si riferisce a Either
. Fondamentalmente, Either
non è una monade, ma se si "proietta" uno dei lati, allora quella parte si comporta come una monade Option
.
Parser
è una monade, che costituisce la base dei combinatori di parser.
Ammetto che non riconosco ControlContext
. Mi chiedo se sia legato alle continuazioni (che sono anche le monadi).
Qui ci sono i link ai tre file Sources da Scalaz:
Date un'occhiata a dichiarazioni di istanza. Questo potrebbe darti un'idea di quali tipi dalla libreria standard soddisfano l'interfaccia monadica.
OP non si riferisce a scalaz –
- 1. Quali sono le eccezioni standard di Scala?
- 2. Quali sono le migliori caratteristiche di Scala?
- 3. Quali sono le principali modifiche da scala 2.8.1 a scala 2.9.1?
- 4. Quali sono le alternative per i pulsanti di opzione?
- 5. Quali sono le piattaforme in .NET Platform Standard?
- 6. Quali sono le diverse tecniche di memoizzazione in Java?
- 7. Quali sono le diverse proprietà disponibili in System.DirectoryServices.DirectorySearcher.PropertiesToLoad
- 8. Scala equivalente a Haskell monadi
- 9. Quali sono le variabili pure?
- 10. Quali sono i vantaggi delle diverse endianness?
- 11. Quali sono i caratteri unicode standard?
- 12. Sono tutti tipi differenziabili Monadi
- 13. Go-Scala-Go! Quali sono le principali differenze?
- 14. Quali sono le garanzie per i qualificatori di accesso scala?
- 15. Quali sono le differenze tra Int e Integer in Scala?
- 16. Quali sono le alternative al polimorfismo del sottotipo in scala?
- 17. Quali sono le fortune?
- 18. Le monadi di continuazione?
- 19. Scala: le classi sono sufficienti?
- 20. Quali sono tutte le convenzioni di denominazione monade?
- 21. Per un modulo Python, quali sono le variabili globali standard da dichiarare?
- 22. Scala convert Opzione da [T] a stringa
- 23. Le dipendenze di riferimento C# sono diverse da VB?
- 24. Le origini dati diverse da Mongo sono disponibili con Meteor?
- 25. Sono consentite le operazioni di iteratore standard da lanciare?
- 26. Quali sono le specifiche per Motion JPEG?
- 27. In che modo le funzioni dell'operatore sul posto di Python sono diverse dalle funzioni standard dell'operatore?
- 28. Quali classi di eccezioni sono nella libreria standard C++
- 29. Quali sono gli elementi più sorprendenti dello standard C++?
- 30. Quali sono le alternative alla VM Java?
Cosa intendete con "la firma per flatMap in essi non è la flatMap di un monade"? Ti riferisci al macchinario implicito? – paradigmatic
@paradigmatic, sì. Vedi il Tony Morris rant [qui] (http://stackoverflow.com/questions/1722726/is-the-scala-2-8-collections-library-a-case-of-the-longest-suicide-note-in -hist/1735694 # 1735694). – missingfaktor