Uno degli enormi vantaggi dei linguaggi che hanno una sorta di riflessione/introspeczione è che gli oggetti possono essere costruiti automaticamente da una varietà di fonti.Come si esegue la serializzazione automatica dei dati degli oggetti dati?
Ad esempio, in Java è possibile utilizzare gli stessi oggetti per mantenere un db (con Hibernate), serializzarlo su XML (con JAXB) e serializzare su JSON (json-lib). Puoi fare lo stesso anche in Ruby e Python, seguendo di solito alcune semplici regole per le proprietà o le annotazioni per Java.
Quindi non ho bisogno di molti "oggetti di trasferimento domini". Posso concentrarmi sul dominio in cui lavoro.
Sembra in FP molto rigido come Haskell e Ocaml questo non è possibile. In particolare Haskell. L'unica cosa che ho visto è fare una sorta di pre-elaborazione o meta-programmazione (ocaml). È solo accettato che tu debba fare tutte le trasformazioni dal basso verso l'alto?
In altre parole, è necessario eseguire molte operazioni noiose per trasformare un tipo di dati in haskell in un oggetto riga JSON/XML/DB e di nuovo in un oggetto dati.
"in rigorose FP [lingue] [..] questo non è possibile" - i problemi che si verificano non sono causati dalla programmazione funzionale, ma da altre funzionalità/limitazioni di Haskell/OCaml. –
Abbastanza giusto. Avrei dovuto dire lingue algebriche di tipo compile sicuro. Sì, in qualcosa come Lisp questo probabilmente non è un problema. La definizione di FP severa è un po 'allentata. Anche con linguaggi come Scala in cui si ha una riflessione, l'approccio preferito è "analizzare" i dati (vedere anorm per giocare 2). –
Anche @mattfenwick Non sono sicuro che mi piacciono le tue modifiche se rimuovi Haskell dal titolo e rovini google. Questo no –