Fork me on GitHub
#clojure-italy
<
2020-07-20
>
Andrea Imparato13:07:29

lo e’! ancora non l’ho risolto 😄

Andrea Imparato13:07:20

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

Andrea Imparato13:07:11

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 Imparato13:07:36

cioe’ fare la chiamata ricorsiva dentro ad un for?

richiardiandrea15:07:21

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 Imparato15:07:24

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

richiardiandrea22:07:54

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

Andrea Imparato13:07:14

o cmq dentro ad un loop su di una lista?

andrea.crotti20:07:06

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

andrea.crotti20:07:47

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

andrea.crotti20:07:07

ammettendo appunto di non aver a che fare con big data