Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.lang.javascript > #8293
| From | son <son@mailnesia.com> |
|---|---|
| Newsgroups | it.comp.lang.javascript |
| Subject | Re: programmazione funzionale |
| Date | 2019-01-06 10:48 +0100 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <q0sisk$19ll$1@gioia.aioe.org> (permalink) |
| References | <q0rg98$rp7$1@gioia.aioe.org> <g9dtc4Fhg3qU1@mid.individual.net> |
Il 06/01/2019 09:42, Alessandro Pellizzari ha scritto:
> Spero di non aver creato più confusione di prima. :D
No, anzi, ti ringrazio del tempo che mi hai dedicato.
Però c'è qualcosa che ancora non capisco.
Ho imparato (spero) a sostituire i miei cicli for... con i metodi .map,
.reduce e .filter per passare dall'approccio imperativo a quello
dichiarativo.
Ma non riesco a scrivere il mio codice assemblando delle funzioni pure.
Per esempio, in questo articolo
https://medium.com/the-renaissance-developer/concepts-of-functional-programming-in-javascript-6bc84220d2aa
si dice che le funzioni pure non dovrebbero usare oggetti globali.
Ebbene, io non ci riesco. Scrivo programmini di animazione usando la
libreria D3, che più o meno sono formulati così:
var svg=d3.append("svg")...
var obj1=svg.append(...
var obj2=svg.append(...
function animaObj1() {
obj1
.transition()
...
.on("end",function() {
// qualche altra funzione (*)
}
// (*) immagino che .on("end",...)
// sia una qualche forma di premise
}
function animaObj2() {
obj2
.transition()
...
.on("end",function() {
// qualche altra funzione
}
}
// altre funzioni che definiscono delle transizioni
function ...
// e per finire (semplificando al massimo il discorso)
function main() {
...
animaobj1()
...
animaobj2()
}
main()
Cioè: dichiaro alcuni (pochi) oggetti globali che poi sono accessibili a
tutte le funzioni. Tutto è strutturato affinché queste funzioni siano in
grado di accedere agli oggetti obj1 e obj2, a loro volta definiti dentro
l'oggetto svg.
Potrei dichiarare tali oggetti parametri delle funzioni che li usano, così:
function animaObj1(shape) {
shape
.transition()
...
.on("end",function() {
// qualche altra funzione
}
}
ma queste funzioni *modificano* tali oggetti, quindi violerei il
principio di immutabilità... e d'altronde il programma deve modificare
gli oggetti obj1 e obj2, per mostrare i cambiamenti dei corrispondenti
elementi dom a video...
Sono riuscito a spiegare la mia difficoltà?
Back to it.comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar
programmazione funzionale son <son@mailnesia.com> - 2019-01-06 00:57 +0100
Re: programmazione funzionale Alessandro Pellizzari <shuriken@amiran.it> - 2019-01-06 08:42 +0000
Re: programmazione funzionale son <son@mailnesia.com> - 2019-01-06 10:48 +0100
Re: programmazione funzionale Alessandro Pellizzari <shuriken@amiran.it> - 2019-01-06 10:36 +0000
csiph-web