clojure-italy

🇮🇹
Andrea Imparato 2020-07-20T13:31:29.183200Z

lo e’! ancora non l’ho risolto 😄

Andrea Imparato 2020-07-20T13:33:11.184600Z

esiste un modo magico per fare un qualcosa tipo?

(loop [x '((1 2 3))
       v []
  (if x
   (concat v 
    (for [y x]
     (recur y)))

Andrea Imparato 2020-07-20T13:33:36.185100Z

cioe’ fare la chiamata ricorsiva dentro ad un for?

richiardiandrea 2020-07-21T22:36:54.189900Z

Si non credo tu possa..solo funzione dentro loop...che tra l'altro ha senso, è più riusabile

Andrea Imparato 2020-07-20T13:50:20.185200Z

cioe’, l’ho risolto senza tail recursion e quindi con una mappa grande mi sfonda lo stack

Andrea Imparato 2020-07-20T13:51:14.185700Z

o cmq dentro ad un loop su di una lista?

richiardiandrea 2020-07-20T15:45:21.186200Z

Mi pare recur usi loop come label su dove ritornare. Oppure defn...potresti estrarre la seconda parte in una funzione ricorsiva in pratica... Sempre se capisco bene l'intento di quel che stai facendo... è un flatten sembra? Se cerchi recur qui -> https://clojure.org/reference/special_forms lo spiega bene

Andrea Imparato 2020-07-20T15:49:24.186400Z

Sisi so come funziona loop, il mio problema fondamentalmente é che voglio innestare 2 loop con il secondo che fa la recur al primo. Vedendo online avevo trovato una rfc per implementare nativamente i named-loop ma non é mai stata portata avanti

2020-07-20T20:42:06.187700Z

per il problema qui sopra se non hai problemi di performances grossi e poi fare due passate invece di tutto in una, solitamente se puoi usare una struttura dati intermedia magari semplifichi l'algoritmo @andrea.imparato

2020-07-20T20:42:47.188800Z

in generale poi non ho guardato nello specifico al problema e adesso ho troppo sonno per pensarci 😄 ma di solito come truccone funziona sempre

2020-07-20T20:43:07.189500Z

ammettendo appunto di non aver a che fare con big data