2015-12-13 17 views
11

Come LINQ in C#, per la comprensione in Scala, qualcosa di simile in Kotlin? Se non supportato, è pianificato?Kotlin supporta la comprensione monadica?


MODIFICA: La risposta è che il supporto per la comprensione è sul tavolo.

+5

penso, c'è stato qualche problema di comunicazione qui. Non esiste una politica simile a quella di non usare le monadi ovunque. Alcuni costrutti monad, come le chiamate sicure per i tipi nullable, sono integrati nella lingua. Al momento non supportiamo la comprensione, ma questa funzionalità è sul tavolo. –

+0

Come notava @AndreyBreslav, Kotlin usa le costruzioni monadiche dove ha senso. Quello che ho detto nella mia risposta è che non vi è alcun obiettivo di utilizzare le monadi in ** ogni ** concetto di lingua singola – voddan

risposta

5

Nella versione di anteprima di Kotlin 1.1 c'è universale async/await sintassi che può essere utilizzato per diversi tipi di comprensioni monadici:

Molti linguaggi (che iniziano per C# nel 2012) supportare asincrona programmazione attraverso il linguaggio dedicato costrutti come asincrona/attendere le parole chiave . In Kotlin, abbiamo generalizzato questo concetto in modo che le librerie possano definire le proprie versioni di tali costrutti, e async non è una parola chiave , ma semplicemente una funzione.

Questo design permette l'integrazione di diverse API asincrone: Futures/promesse, callback-passing, ecc E 'anche abbastanza generale da esprimere generatori pigri (rendimento) e coprire alcuni altri casi d'uso.

source

+0

thx. non sapevo che async/await è analogo a return/bind. entusiasmante anche per vedere le nuove funzionalità in 1.1 –