Qualche lingua ha una sintassi per le promesse? [chiuso]

0

Sono davvero contento che EcmaScript 6 abbia promesse incorporate nel linguaggio, ma la sintassi sarà ancora abbastanza prolissa:

new Promise(f).then(r => {
...
}).then(r2 => 
...
}).catch(...

Mi stavo chiedendo se ci sono linguaggi che hanno zucchero sintattico per le promesse, quindi il risultato sembra più simile alla programmazione imperativa convenzionale. Forse ipoteticamente qualcosa come:

fetch f {
get r
  ...
get r2
  ...
catch
  ...
}
    
posta Steve Bennett 16.10.2015 - 07:19
fonte

1 risposta

6

Sì, ci sono molti di questi linguaggi:

  • C # ha metodi async e la parola chiave await . Tecnicamente parlando, qualsiasi oggetto che implementa un determinato pattern sintattico può essere await ed, ma intenzione è per questa sintassi da utilizzare, beh, programmazione asincrona e gli unici oggetti nel framework che implementare il modello sintattico sono oggetti Task<T> , che sono futuri / promesse (a seconda della tua esatta definizione di "futuro" e "promessa", potrebbero essere futuri, promesse, entrambi o nessuno dei due).
  • Visual Basic.NET ha la stessa sintassi con la stessa semantica
  • F # ha flussi di lavoro asincroni, che sono stati l'ispirazione per async / await
  • Nelle lingue con macro, le librerie possono implementare la propria sintassi (entro i limiti), e quindi ci sono librerie promettenti in Scala, Scheme, Common Lisp, Clojure e altri Lisps, che hanno quella che appare come sintassi incorporata.
  • Python 3.5+ ha async / await
  • La prossima versione di ECMAScript molto probabilmente avrà async / await
  • La prossima versione di C ++ potrebbe avere o meno resumable / await
  • E ultimo ma molto importante: Oz non ha una sintassi speciale per le promesse, perché in Oz ogni variabile è una variabile del flusso di dati, e ogni em> value è una promessa!
risposta data 16.10.2015 - 10:52
fonte