Fork me on GitHub
#clojure-italy
<
2019-05-08
>
reborg08:05:23

Se qualcuno sentisse il bisogno di una challenge stamattina: data una composizione di nested lists xs (h (f (g (j x 1) 12 13)) 2) scrivere (f xs) => ((j x 1) (g 12 13) (f) (h 2)) (una specie di reverse de-nesting).

bronsa09:05:40

user=> (reverse (keep #(when (seq? %) (remove seq? %)) (tree-seq seq? seq '(h (f (g (j x 1) 12 13)) 2))))
((j x 1) (g 12 13) (f) (h 2))

bronsa09:05:06

ci son modi decisamente migliori, ma questa e` la versione di getto

helios09:05:04

e' quasi l'inverso della threading macro ->

bronsa09:05:10

penso fosse quello lo scopo :)

reborg09:05:13

Esatto :)

(defmacro <- [form] 
  `(->> ~form
        (tree-seq seq? seq) 
        (filter seq?) 
        (map (partial remove seq?)) 
        (reverse) 
        (cons '->)))

(<- '(h (f (g (j x 1) 12 13)) 2))
;; (clojure.core/-> (j x 1) (g 12 13) (f) (h 2))

helios09:05:18

ehehe 😄

reborg09:05:31

Quella era la seconda domanda… :)

Andrea Imparato14:05:57

buongiorno a tutti, domanda: come gestireste lo scenario “ho un database postgres piuttosto grosso ed un file xml anch’esso bello grosso. Devo inserire/editare righe del db a partire dal file xml”. E’ un assignment che ho ricevuto per una posizione di lavoro quindi se mi potete illuminare sarebbe buono 😄

manuel14:05:32

non barare! 😉

reborg16:05:28

@andrea.imparato cerca di rimanere lazy (che quei “grosso” sembrano indicare). Scorri l’xml e fai update “on the go”.

Andrea Imparato21:05:46

error in process filter: Wrong number of arguments: (4 . 4), 0 il mio emacs è impazzito

manuel06:05:39

M-x toggle-debug-on-error E poi ripeti l'azione che ha scatenato l'errore. Dovresti ottenere un backtrace più accurato di quel messaggio di errore così.