Attualmente sto lavorando su un problema di programmazione nel mio tempo personale che richiede di eseguire una funzione javascript che può essere chiamato in questo modoScrivere una funzione javascript al curry che può essere chiamata un numero arbitrario di volte che restituisce un valore sull'ultima chiamata di funzione
add(1) // 1
add(1)(2) // 3
add(1)(2)(3); // 6
add(1)(2)(3)(4); // 10
add(1)(2)(3)(4)(5); // 15
Quello che sto avendo problemi a capire è come farlo restituisce un valore sulla molto ultima chiamata.
Ad esempio, affinché add(1)(2)
lavorare, poi add(1)
deve restituire una funzione, ma secondo le istruzioni add(1)
quando chiamato da solo tornerà 1
.
Sto assumendo che un modo per superare questo è capire quante volte in successione viene chiamata la funzione add
, ma non riesco a pensare a un modo per riuscirci. Qualcuno ha qualche suggerimento che possa indicarmi la giusta direzione?
Ho letto questi due articoli (1, 2) sulla funzione di elaborazione e li capisco, ma non sono sicuro di come fare il currying quando si ha a che fare con un numero variabile di argomenti.
Allora, cosa hai provato? Un sacco di esempi di curriculum in rete. si restituisce la funzione ... – epascarello
@epascarello scusa se non l'ho chiarito. Ho letto questo http://www.crockford.com/javascript/www_svendtofte_com/code/curried_javascript/index.html e questo http://blog.carbonfive.com/2015/01/14/gettin-freaky-functional -wcurried-javascript /. Per quanto riguarda i miei tentativi, sono stati così fuori che non vedo il valore nel pubblicarli. Inoltre non ho problemi con il currying stesso. Ho un problema con la funzione che prende un numero variabile di chiamate prima che si risolva definitivamente. Non so come sistemarlo. – m0meni
Btw, invece di usare le funzioni variadiche, dovresti risolvere i problemi corrispondenti con funzioni di operatore riduttore e binario, o con una funzione "semi-variadica", dove gli argomenti variadici vengono passati come una matrice. Questo si adatta molto meglio allo stile funzionale. Le funzioni variabili creano più problemi di quelli che risolvono e dovrebbero essere evitati. – rand