Fork me on GitHub
#clojure-italy
<
2021-02-04
>
reborg09:02:48

Giorno. Approccio interessante per static typing in Clojure https://github.com/arohner/spectrum

reborg09:02:32

Non ne abuserei (non mi piace l’idea di avere specs su ogni funzione). Vorrei capire se posso limitarmi a scrivere specs solo per la parte pubblica di un namespace, oppure se sarei costretto a farlo su tutte le funzioni.

Andrea Imparato09:02:53

fico, che differenza c’e’ tra test.check e questa lib? :thinking_face:

Carlo10:02:18

ciao @reborg se ho capito bene in quel progetto dovresti poter scrivere spec solo per una parte delle tue funzioni. Detto cio', non l'ho ancora usata, quindi se la usi tienimi aggiornato. Altre cose simili sono guardrails e https://www.fulcrologic.com/copilot (evoluzione commerciale di guardrails sempre dell'autore di fulcro)

Carlo10:02:12

@imparato.andrea test.check e' property base testing, cioe' genera valori on demand (e magari controlla che soddisfino delle proprieta'). spectrum vorrebbe essere un tool di analisi statica (quindi non a run-time) che controlla le spec

👍 3
Carlo10:02:54

@reborg io per ora sto usando guardrails pero' pagherei per un buon tool di analisi statica

reborg12:02:30

> Altre cose simili sono guardrails e https://www.fulcrologic.com/copilot (evoluzione commerciale di guardrails sempre dell’autore di fulcro) > @reborg io per ora sto usando guardrails pero’ pagherei per un buon tool di analisi statica (edited) Si non ho nessuna esperienza con Spectrum in particolare (che e’ ancora molto sperimentale). Sembra che il maggior beneficio al momento, sarebbe per situazioni dove si fa uso di spec annotations e vuoi capire a compile time se le specs che hai scritto hanno senso tra di loro. Sembra molto simile a Copilot come approccio: evitare di decorare tutto con specs e fare una parte di inference guardando al codice che hai scritto.

Carlo16:02:38

cosa usi tu per controllare le spec @reborg?

reborg17:02:26

niente di speciale, principalmente unit testing

👍 3
richiardiandrea23:02:51

oggi ho scoperto che non posso usare spec con defprotocol 😄

richiardiandrea17:02:35

Il problema di quella soluzione e' che ti perdi il vantaggio dell'aver introdotto un'interfaccia al tuo namespace

richiardiandrea17:02:06

perche' chiamo foo che non e' parte del protocollo