This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-09-05
Channels
- # beginners (45)
- # boot (2)
- # cider (2)
- # cljs-experience (1)
- # cljsrn (6)
- # clojure (67)
- # clojure-brasil (1)
- # clojure-dusseldorf (47)
- # clojure-finland (7)
- # clojure-italy (81)
- # clojure-portugal (2)
- # clojure-russia (12)
- # clojure-sanfrancisco (1)
- # clojure-serbia (1)
- # clojure-spec (22)
- # clojure-uk (27)
- # clojurescript (49)
- # clojurewerkz (3)
- # code-reviews (3)
- # component (19)
- # core-async (3)
- # cursive (16)
- # events (7)
- # fulcro (20)
- # graphql (7)
- # immutant (1)
- # jobs (2)
- # juxt (44)
- # leiningen (7)
- # lumo (35)
- # onyx (31)
- # portkey (31)
- # portland-or (8)
- # random (1)
- # re-frame (82)
- # reagent (35)
- # sfcljs (1)
- # spacemacs (5)
- # specter (7)
- # unrepl (4)
- # yada (2)
Come implementereste un group-by sulle chiavi di una mappa a basso livello? Usando solo map, filter, le hof di base?
puoi usare reduce?
Giorno!
@kors intendi i valori delle chiavi, giusto?
Giorno @cichli!
Benvenuto @cichli
come va?
hey @danieleneal tutto ok! Stai imparando l'italiano?
vedremo
risultato :
{
:4 ["Anna", "Emma", "Sara"],
:5 ["Carla", "Maria"],
:6 ["Angela", "Chiara"]
}
beh, non ci sono molti modi di risolverlo migliori di usare esattamente l'implementazione di group-by
vector?
ovviamente
Lui lavorando in altri linguaggi, quando ha un problema da risolvere, lo risolve in haskell e poi porta la soluzione nel linguaggio x. Ho tentato di fare la stessa cosa con clj. Il linguaggio target è php che non ha nessuna hof per gruppare. Avevo risolto con una lambda ricorsiva ma essendo codice per degli studenti mi sembrava un po' troppo, e poi è molto "costosa" come soluzione in php.
>quando ha un problema da risolvere, lo risolve in haskell e poi porta la soluzione nel linguaggio x non mi sembra minimamente un approccio ottimale, onestamente
beh, in natural languages lo step di traduzione da linguaggio piu` familiare a linguaggio meno familiare, per esempio, e` visto come uno step extra da cercare di evitare
@danieleneal grazie dei compilmenti 🙂
se devi usare haskell per forzarti a scrivere una soluzione fp da poi portare in un altro linguaggio.. magari non hai internalizzato bene l'approccio fp?
(chiaramente non e` un giudizio sul tuo amico, non conoscendolo potrebbe essere un guru di HS, semplicemente una mia opinione sull'approccio)
@kors sembra un (group-by count ["Anna", "Carla", "Angela", "Chiara", "Emma", "Maria", "Sara"])
?
@bronsa tuttavia quando programmo in php ho uno stile completamente diverso da quando programmo in clj. Clj ha sicuramente cambiato molto il mio stile, ma in linguaggi che non supportano FP il mio cervello tende comunque a mettere il pilota automatico... In php il supporto FP è veramente molto scarso e per lo più inefficiente. Alcune soluzioni funzionali so proprio da evitare perché il corrispettivo imperativo è molto più efficiente. L'approccio in realtà mi sembra controproducente più che altro perché non credo si sviluppi una vera nozione delle possibilità funzionali del linguaggio target.
>quando programmo in php ho uno stile completamente diverso da quando programmo in clj eh boh, mi sembra una feature piu` che un bug
cercare di shoehornare un particolare approccio in un linguaggio che non ha buon supporto per quello stile di programmazione non m'e` mai sembrato troppo sensato
@bronsa e hai di nuovo ragione! è una feature in effetti ma non quando devi spiegare il paradigma funzionale a degli studenti php 🙂
Il funzionale comunque ti cambia e ti aiuta anche nei linguaggi imperativi come php. In questo senso mi sono chiesto se l'approccio di Vitalij potesse essere utile. Tuttosommato direi che mi ha un po' confuso, quindi forse no. Ero curioso anche perché non ho attualmente molte occasioni di lavorare con clj e poterci giocare ogni tanto fa sempre piacere.
Del resto, quello che fai in clj co na riga di codice è imparagonabile nella maggior parte degli altri linguaggi 😄
Questo e' uno step sotto a reduce. Forse ha senso nella discussione fp in php?
(loop [[word & more] ["Anna", "Carla", "Angela", "Chiara", "Emma", "Maria", "Sara"] res {}]
(if word
(recur
more
(assoc res (count word) (conj (get res (count word) []) word)))
res))
se php ha ricorsione (immagino di si') e' pur sempre un approccio funzionale e non imperativo
@reborg così a occhio è stato più o meno il mio approccio. La ricorsività però è insicura. Php ha un limite di nesting che con un elenco più grande avrebbe generato un errore.
anche Java ha quel limite (e Clojure di conseguenza, se non usi loop-recur che riscrive il loop)
Un modo di risolverla in php è con un generator ricorsivo... Che itera ricorsivamente senza nestare. Però è un argomento avanzato per me, figurati per chi non ha idea di cosa sia un generator (gli studenti)
capisco, in bocca al lupo... c'e' sempre http://www.pharen.org 🙂
Parlando di W. Byrd (di miniKanren e reasoned-schemer fame), pare che gli dovro' insegare ad usare Clojure transducers perche' si e' iscritto al mio workshop... 🙀
a saperlo.. ero ad oxford domenica a prendere una birra con un amico che ha tenuto un workshop a FSCD
una birra con i clojuristi italiani (a beer with the italian clojurists), quando va in Italia (when he goes back to italy)
se la birrata la fate a milano o dintorni, cerchero' di esserci anche io (ma non sono un grande bevitore)
@reborg count me in!