Fork me on GitHub
#clojure-italy
<
2019-02-18
>
manuel07:02:09

buondì, buon tea, e buona settimana

reborg10:02:51

Eila’ popolo

manuel10:02:38

buongustaio!

reborg13:02:12

mi chiedevo… in clj abbiamo un’idea abbastanza chiara di codice idiomatico. Ci sono anche tools che aiutano a convergere verso un uso idiomatico. Quali altri linguaggi hanno qualcosa di simile? Senza “idioma” e’ abbastanza anarchica la cosa no?

andrea.crotti13:02:21

tipo a che tools ti riferisci? In Clojure che io sappia solo Kibit aiuta in questo senso

reborg13:02:54

si Kibit, e la presenza di una guideline di cui posso mandare un link se serve

andrea.crotti14:02:17

eh si bisogna vedere cosa si intende per idiomatic, che e' un po' vago

andrea.crotti14:02:52

secondo me cose tipo Data > functions > macros ad esempio influenzano di piu' cosa e' idiomatico e cosa no

andrea.crotti14:02:32

e non penso che Kibit possa aiutare molto a riguardo

reborg14:02:45

Mi chiedevo se c’era una cosa simile alla clj style guideline (https://github.com/bbatsov/clojure-style-guide) in altri linguaggi.

bronsa14:02:09

considerando che la clj style guideline e` stata ispirata da quella per ruby.. :)

reborg14:02:43

Ecco, ad es. Ruby. Ho cercato Haskell e Google dice di no.

bronsa14:02:18

comunque meh onestamente, trovo molte parti della style guide questionabili

bronsa14:02:45

@reborg beh ci sono linguaggi (e.s. elm, go), che hanno autoformatter che enforciano uno stile (sintattico) consistente

reborg14:02:24

si giusto, mi hai fatto venire in mente quello embedded in go

andrea.crotti14:02:36

si cmq decisamente per Python ci sono un sacco di tools

andrea.crotti14:02:58

e anche per Elixir mi pare

manuel14:02:38

io ho provato questo con Clojure: https://github.com/purcell/reformatter.el combinato con zprint.

reborg14:02:10

la definizione di “idiomatico” e’ abbastanza soggettiva, non entro nel merito. Ma quando molti soggetti si mettono d’accordo, almeno stabiliamo 1. una linea guida su cui misurare di quanto diverge un codice da un altro e 2. impariamo tutti la lingua comune (che ci piaccia o meno), poi i dialetti.

manuel14:02:14

anche se in verità per ora mi allineo alla style guide e basta solitamente

reborg14:02:04

Se mi entri in ufficio e parli solo giapponese, ci sono dei problemi. Ma se impari un po’ di inglese possiamo lavorare assieme (per capirci simple_smile).

manuel14:02:52

sì, uno stile comune aiuta in generale anche a capire codice di altri.

reborg14:02:21

Ad es, pointfree haskell e’ idiomatico o no?

andrea.crotti14:02:14

che sappia io si

andrea.crotti14:02:24

nella mia ignoranza

andrea.crotti14:02:19

cmq secondo me solo i linguaggi "semplici" come Clojure hanno qualche speranza di avere successo con style guides e simili

andrea.crotti14:02:38

piu' o meno tutti scrivono codice allo stesso modo, se guardi a Scala o JS ognuno fa come gli pare

andrea.crotti14:02:25

la differenza si vede quando usi librerie esterne, che di solito in Clojure sono semplici da digerire

reborg15:02:05

Ho anch’io quest’impressione, ci sono linguaggi che non riescono ad uniformarsi su uno stile o un altro.

nilrecurring16:02:55

Pointfree haskell è un po’ illeggibile il più delle volte

nilrecurring16:02:53

Comunque secondo me qui c’è una distinzione semantica da fare: cosa intendiamo con “idiomatico”? Intendiamo “la sintassi” (i.e. dove vanno gli spazi, etc, roba che può gestirsi un autoformatter) oppure “il set delle cose che è buonsenso fare e le cose che non vanno bene” (e.g. puoi scriver Haskell come scriveresti C, ma non è idiomatico..)

reborg16:02:26

la seconda!

reborg16:02:06

Quindi, per Haskell (altro esempio) usare Arrows dove una Monads funzionerebbe uguale, non e’ idiomatico.

nilrecurring16:02:46

Le arrows sono pure idiomatiche, ma in generale il codice è più leggibile in do-notation

nilrecurring16:02:18

Questo post è abbastanza utile per tracciare la linea della “leggibilità“: http://www.haskellforall.com/2015/09/how-to-make-your-haskell-code-more.html

👍 5
nilrecurring16:02:43

(vedi rule6 “use pointfree sparingly”)

nilrecurring16:02:27

E questa è un post molto divertente su SO: https://stackoverflow.com/questions/18813431/how-can-i-understand-t-in-haskell (dove la risposta dice che quella roba pointfree della domanda non è “idiomatica”)

reborg16:02:31

c’e’ da sperare che il tutto confluisca in qualcosa tipo https://github.com/tibbe/haskell-style-guide/blob/master/haskell-style.md

nilrecurring16:02:53

Si però questo stile di styleguide è più quello che intendevo con il primo significato di “idiomatico”

nilrecurring16:02:29

Ovvero encodi queste constraints in un autoformatter e lui fa da solo

nilrecurring16:02:12

Però un autoformatter non sa che ((==) <*>) è scritto meglio come \f x -> x == f x

nilrecurring16:02:09

O per fare un esempio in clojure, se fai un loop che fa cose su un atom (orribile, lo so, ma l’ho visto succedere), per un autoformatter è difficile dire “eh ma questo non va bene, usa una reduce”

reborg16:02:58

la clojure style guide non contiene solo formatting, c’e’ molto di piu’

👍 5