Clojurians
#clojure-italy
<
2017-07-11
>

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

reborg09:07:13

Grøten mörghen

nilrecurring09:07:53

Godmorgon godmorgon

nilrecurring09:07:17

Qui a Helsinki è un’ottima giornata estiva

nilrecurring09:07:22

15 gradi e piove

bronsa09:07:09

non che qui a londra la giornata sia molto meglio

bronsa09:07:31

17 gradi e tra poco piovera`

bronsa09:07:50

e io chiaramente in maniche corte e pantaloni corti visto che sono uscito aspettandomi una giornata come ieri

skuro12:07:42

non so a Londra, ma ad Amsterdam il look e' spesso dettato piu' dal calendario che dal clima

skuro12:07:24

11 luglio -> t-shirt e pantaloncini, pure che grandini

manuel13:07:26

@skuro faccio così anche io pur vivendo in Italia :smile:

skuro13:07:26

mah, magari e' una cosa solo sarda, ma io ricordo che e.g. le mamme appena vedono 2 gocce subito imbacuccano i poveri bambini che sembrano tipo Maggie Simpson nel giaccone a stella di natale

skuro13:07:55

mentre qua le vedo accompagnare i bimbi a scuola in bicicletta, sul seggiolone di fronte, mentre nevica, creando simpatici pupazzi di neve semoventi

skuro13:07:06

comunque in Italia la tupla [:calendario :stagione] e' sufficientemente stabile da rendere la tua abitudine piu' applicabile :slightly_smiling_face:

mdallastella13:07:21

Domanda: ho una macro che mi genera una funzione

mdallastella13:07:39

(defmacro defcommand
  [command-name args request-handler response-handler]
  `(defn ~command-name
     [[email protected]]
     (with-open [s# (net/create-socket)]
       (-> s#
           (net/write-request ~request-handler [email protected])
           (net/read-response ~response-handler)))))

mdallastella13:07:31

ora, request-handler e response-handler sono due funzioni

mdallastella13:07:12

request-handler può prendere n argomenti

mdallastella13:07:39

nei casi semplici, tutto bene

mdallastella13:07:24

(defcommand my-command 
  [a b]
  my-command-request
  my-command-response)

mdallastella13:07:35

questo fila via liscio

mdallastella13:07:21

ma se provo a definire una variadic

(defcommand my-second-command
  [a b & options]
  my-second-command-request
  my-second-command-response)

mdallastella13:07:23

Si rompe (giustamente) dicendo "Unable to resolve symbol: & in this context"

mdallastella13:07:41

Qualcuno ha qualche idea

mdallastella13:07:03

@bronsa: I'll give it a try, thanks

reborg14:07:56

@mdallastella qual e' la signature di net/write-request?

mdallastella14:07:43

@reborg eh, è questo il problema,

(write-request [command & args] ... )

reborg14:07:57

allora dovrebbe essere (apply net/write-request ~request-handler [email protected](remove '#{&} args)

bronsa14:07:15

splicing e` sufficente

bronsa14:07:34

either (apply foo bar ~baz) o (foo bar [email protected])

bronsa14:07:35

sono equivalenti

bronsa14:07:55

se fai (apply foo bar [email protected]), baz deve essere una collezione con una collezione come ultimo argomento

bronsa14:07:07

e.g. [:foo [:bar :baz]]

reborg14:07:58

non capisco.... "(defmacro defcommand [cmd args f] (defn ~cmd [[email protected]] (~f [email protected](remove '#{&} args))))" se non metto apply prima di ~f` questo non va. Ad es: (defcommand ++ [a b & opts] +) e (++ 1 2 3)

reborg14:07:45

provo a riformattare:

reborg14:07:05

(defmacro defcommand [cmd args f] `(defn ~cmd [[email protected]] (~f [email protected](remove '#{&} args))))

bronsa14:07:27

si` hai ragione

bronsa14:07:30

non e` giornata

bronsa14:07:03

avevo completamente dimenticato il contesto della macro

reborg14:07:26

no pbs :slightly_smiling_face:

reborg14:07:27

quest'equivalenza comunque mi soprende: (remove #{'&} '[a b & c]) <=> (remove '#{&} '[a b & c])

bronsa14:07:39

in che modo?

bronsa14:07:51

as in, ti sorprende perche` ti aspetteresti qualcosa di diverso o non c'avevi mai fatto caso?

reborg14:07:48

no mi spiazza quando vedo una fn come un set che con il quote davanti mi verrebbe da pensare che non puo' andare... poi se ci penso mi passa :slightly_smiling_face:

bronsa14:07:10

ah certo, un'altra form che spesso non ci si fa caso sia valida e` per esempio '^{:foo bar} baz

bronsa14:07:46

o anche (di poca o nulla utilita`, certo) '^foo bar

bronsa14:07:22

basta ricordarsi che non c'e` niente di speciale nelle reader macro

mdallastella15:07:38

Grazie a tutti e due, stasera ci ragiono con calma

andrea.crotti20:07:44

@nilrecurring @reborg google e youtube non aiutano, cosa sarebbe questo mmight?

reborg20:07:50

e non so, che roba l'e' un mmight?

andrea.crotti20:07:54

una persona immagino :smile:

andrea.crotti20:07:07

ho scoperto adesso questa conferenza a Cadiz