Clojurians
#clojure-italy
<
2018-09-20
>

This page is not created by, affiliated with, or supported by Slack Technologies, Inc.

manuel07:09:54

buondì @andrea.crotti personalmente trovo remove una soluzione migliore. Per chi legge il codice (compreso il me di qualche mese dopo), è più immediato capire cosa succede con remove che con una regexp da decifrare.

andrea.crotti07:09:21

La regexp da decifrare c'è comunque a quanto ho capito

andrea.crotti07:09:23

Se la scrivi già negata c'è solo quella altrimenti hai anche il remove

manuel07:09:18

sì, ma remove segnala immediatamente che stai per rimuovere "qualcosa" da un sequence. Mi sembra più rapido a colpo d'occhio, ecco. :slightly_smiling_face:

andrea.crotti07:09:18

Può essere si, anche se dipende dalla regexp per me

andrea.crotti07:09:26

Rimuovi comunque qualcosa con filter, e se la regexp negativa matcha molto meno di quella positiva secondo me andrebbe usata quella

andrea.crotti07:09:40

Qual è la regexp @andrea.imparato?

andrea.imparato08:09:50

ah certo @andrea.crotti ma diciamo che ci sono troppo cose da negare che quelle da tenere, se ha senso quello che dico :)

andrea.crotti08:09:42

si piu' o meno, se fai qualche esempio magari e' piu' facile aiutare

andrea.imparato08:09:40

fai conto che è una serie di regex per pulire un file di una chat di Whatsapp che uso per fare il training al mio Markov chain bot

andrea.imparato08:09:30

mi è più facile dire "rimuovi tutto quello che è un timestamp" che "tieni questo se è una parola, oppure un URL etc..."

andrea.crotti08:09:02

si in quel caso ha senso

mdallastella10:09:24

@andrea.imparato dai un'occhiata a Instaparse piuttosto di usare delle regexp hardcoded (https://github.com/Engelberg/instaparse)

andrea.imparato10:09:07

si può usare anche con xml?

mdallastella10:09:03

@andrea.imparato tecnicamente, essendo EBNF puoi usare qualsiasi grammatica (es. https://www.liquid-technologies.com/XML/EBNF1.1.aspx)

andrea.imparato10:09:24

che potenza! mind blown :boom:

andrea.imparato10:09:55

che cazzo sto facendo della mia vita con php :smile:

mdallastella10:09:36

(Volendo c'è anche per PHP https://github.com/qntm/loco, EBNF è uno standard piuttosto antico)

andrea.crotti19:09:05

@andrea.imparato la riflessione su PHP e' comunque valida, penso la stessa cosa io con Python

andrea.crotti19:09:26

(pensando al passato almeno, adesso ho la fortuna di essere pagato per usare Clojure)

nilrecurring20:09:27

Ho fatto la stessa riflessione anche io quando ho deciso di mollare python per clojure in ambito lavorativo anni fa

nilrecurring20:09:20

È indubbiamente complicato e incerto all’inizio, ma fortunatamente Clojure non ha una curva di apprendimento lunga, e il linguaggio è molto focalizzato su cosa è “production ready” e cosa no

nilrecurring20:09:40

E.g. deployare python è tutt’oggi un dolore incommensurabile

justalanm20:09:05

Con Docker è diventato abbastanza semplice (se tralasciamo i problemi di versione e di gestione delle dipendenze)

nilrecurring21:09:49

Abbiamo un paio di progetti python qui al lavoro, e ogni volta che ne spawna uno nuovo (tipicamente un progetto esistente che dobbiamo dockerizzare) è sempre un deliio di dipendenze e pip freeze, uwsgi, etc etc

nilrecurring21:09:49

Per confronto: deployare roba haskell è letteralmente lanciare un binario (statico se vuoi), come go

justalanm05:09:59

Esattamente, usare Python richiede un sacco di disciplina nella gestione degli ambienti, salvo poi trovarsi i colleghi che hanno solo ambiente root di conda dove ci buttano di tutto senza mai fare aggiornamenti :expressionless:

justalanm20:09:58

Ma è anche possibile che sia solo invidia dato che dovrò usare anche Python per I prossimi anni temo :joy:

hi70621:09:10

ciao tutti!

nilrecurring21:09:20

Benvenuto @hi706! :wave:

hi70621:09:13

sapete se esiste un meet up a milano?

nilrecurring21:09:36

@hi706 non che io sappia. Ci sono un paio di Clojuristi (e.g. @edne), un meetup Haskell itinerante (l’ultima volta è stato a Milano a luglio), e dovrebbe esserci anche un meetup Scala ma non so se sia ancora attivo o meno

hi70621:09:00

ah cavoli che peccato che non ci siano tanti clojurian!

hi70621:09:08

qualcuno di voi ha consigli su come imparare a ragionare in modo più funzionale nella risoluzione di problemi tipo quelli di hackerrank?

nilrecurring21:09:56

In che linguaggio? (si, il linguaggio aiuta a pensare in modo diverso)

hi70621:09:13

clojure chiaramente!

nilrecurring21:09:55

Se stai usando clojure dovresti essere abbastanza ok, dovresti provare a evitare atom e loop all’inizio

hi70621:09:19

sono abituato a pensare in C / Python e l'immutabilità mi innervosisce spesso

nilrecurring21:09:32

Tutto normale :slightly_smiling_face: Il trick sta nel passare da “questa funzione fa $cosa sulla mia struttura dati” a “questa funzione mi ritorna una struttura dati con la modifica che voglio”

hi70621:09:02

eh ma quando devi fare operazioni tipo "implementa il calcolo della traccia di una matrice meno la traccia della diagonale opposta" non capisco bene come operare

hi70621:09:30

finchè uso reduce/map che consideri tutti i valori è facile, ma quando devo astrarre loop non riesco a pensare a soluzioni

andrea.crotti12:09:11

puoi fare un po' di esercizi su http://www.4clojure.com/ (o simili)

andrea.crotti12:09:24

per fare un po' di pratica

andrea.crotti12:09:50

poi ti viene naturale, devi solo pensare a ogni algoritmo come una sequenza di trasformazioni