Ciao a tutti,
volevo condividere con voi questo articolo
http://patshaughnessy.net/2014/4/8/using-a-ruby-class-to-write-functional-code
di Pat Shaughnessy in quanto quasi mi stupisco di quanto semplice ma al
tempo stesso efficiente e coerente sia questo tipo di approccio.
Have fun
Senza nulla togliere all’eleganza dell’approccio, secondo me qui si
avvicina al “ho un martello quindi tutto è un chiodo”
Se vi piace la programmazione funzionale, non avete che da scegliere, io
consiglio Scala ma ce ne sono tanti altri!
Mi ricorda un po’ quei post che ogni tanto si leggono sul non usare
l’autoloading in Rails e cose del genere.
Secondo me Ruby è un linguaggio che sacrifica tutto il resto sull’altare
dell’eleganza e della produttività, dunque privarsi di tali elementi
significa… che è meglio usare qualcos’altro.
My 2 cents da poliglotta!
2015-05-18 14:39 GMT+02:00 maurizio de magnis
[email protected]:
A me sembra più una parabola che parte e torna all’OOP passando da FP,
l’effetto tra prima e dopo è simile a quello che fa leggere POODR
http://www.poodr.com/
Buono l’ approccio al refactoring perø non c’e molto di “functional”
qui, a parte la chiamata a #map in fondo
A me tempo fa era piaciuto questo, ne ho un altro ancora meglio ma e’ c#
http://codon.com/refactoring-ruby-with-monads
Andrea
@andrea: aggiunto alla read list
2015-05-18 14:52 GMT+02:00 maurizio de magnis
[email protected]:
@elia: +1
imho dimostra la versatilità di Ruby, quell’essere un buon “0.8
programming
language”.
@luca: dai, questo
https://gist.github.com/olistik/326094ff6703a9df31a8 mi
sembra semplicemente del buon senso applicato
2015-05-18 14:48 GMT+02:00 Elia S. [email protected]:
@elia: +1
Anche a me sembra che sia un esempio di buona programmazione orientata
agli oggetti: in quel contesto, la linea del file è un pezzo
importante del problema e decidere di rappresentarla con una classe è
un passo nella direzione giusta.
Mi suona sempre più stonato, invece, l’uso del termine funzionale in
casi come questo. Ad un certo punto in
http://pragdave.me/blog/2014/02/11/telling-asking-and-the-power-of-jargon/
c’è scritto:
parents are object-based or imperative) is not a functional language.
Silvano
Il 18 maggio 2015 14:55, maurizio de magnis
[email protected] ha scritto:
avvicina al “ho un martello quindi tutto è un chiodo”
di Pat Shaughnessy in quanto quasi mi stupisco di quanto semplice ma al
Maurizio ಠ_ಠ My profile
https://plus.google.com/100973969013103507046/about
Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml
–
Considera l’ambiente prima di stampare questa email. Be a total user
rather than a complete waster.
. . . Silvano S. . . .
❡ email: [email protected]
❡ site: http://www.sistrall.it
★ future: http://contiamoci.com/
★ kitchen: http://keepcooking.it/
Se non c’è arity non è funzionale.
Se non ci sono head e tail non è funzionale.
Se capisci il tuo codice dopo averlo scritto: non è programmazione
funzionale
Il giorno lun 18 mag 2015 16:34 Silvano S.
[email protected]
ha scritto:
@Davide: se consideri un subset specifico di Ruby, puoi trovare arity,
head, tail e pure codice incomprensibile
2015-05-18 17:17 GMT+02:00 Davide R. [email protected]:
@Silvano: considerando l’API esposta dalla classe Line, c’è referential
transparency
http://en.wikipedia.org/wiki/Referential_transparency_(computer_science),
che è una caratteristica peculiare dei linguaggi funzionali.
Ok che come dice il buon Dave T. (e Nanni Moretti) “Names are
important”, ma in questo contesto non mi verrebbe da esorcizzare l’uso
di
“functional” se inteso come “direzione” di sviluppo.
2015-05-18 16:34 GMT+02:00 Silvano S.
[email protected]:
Se capisci il tuo codice dopo averlo scritto: non programmazione
funzionale
Ok, il Perl quindi funzionale. Buono a sapersi.
quick! qualcuno aggiorni wikipedia!
2015-05-18 17:17 GMT+02:00 Davide R. [email protected]:
Se capisci il tuo codice dopo averlo scritto: non programmazione
funzionale
Ok, il Perl quindi funzionale. Buono a sapersi.
@Maurizio, anche perché, in effetti, se proprio non possiamo usare
“funzionale”, che termine dovremmo usare?
“FOOOP” (functional oriented object oriented programming)?
Mah…
s/v
Il 18 maggio 2015 17:29, maurizio de magnis
[email protected] ha scritto:
@elia: +1
parents are object-based or imperative) is not a functional language.
[email protected]>:
scegliere, io
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml
–
Ml mailing list
Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml
–
Considera l’ambiente prima di stampare questa email. Be a total user
rather than a complete waster.
. . . Silvano S. . . .
❡ email: [email protected]
❡ site: http://www.sistrall.it
★ future: http://contiamoci.com/
★ kitchen: http://keepcooking.it/
@Silvano: corro ad aggiungere la skill su Linkedin!
2015-05-18 17:53 GMT+02:00 Silvano S.
[email protected]:
Direi che un linguaggio per dirsi funzionale deve quantomeno avere
first-class functions, cio le funzione devono essere i tipi principali,
e
non le classi.
Poi ci si tira dietro currying, immutable data etc., ma comunque %w(1 2
3).map { |v| v.to_i } non programmazione funzionale, un costrutto che
ci somiglia ma l’ambiente in cui gira completamente diverso. Tant’ che,
nello stesso esempio precedente, la .map e la to_i potrebbero essere
ridefinite ed avere side effects.
–
Maurizio De Santis
Il giorno 18 maggio 2015 17:42, Elia S. [email protected] ha scritto:
@Maurizio #functionalNazi !!!
2015-05-18 17:57 GMT+02:00 Maurizio De Santis
[email protected]:
Che poi Ruby cos versatile che lo puoi pure trasformare in Haskell
–
Maurizio De Santis
Il giorno 9 giugno 2015 16:56, Marco M.
[email protected]
ha scritto:
Ruby non può essere considerato linguaggio funzionale ma direi solo per
un discorso di “side effect”.
E’ vero che in ruby trattiamo degli oggetti ma nella pratica possiamo
ottenere lo stesso risultato: creare delle funzioni che possano essere
passate come parametri, zero o piu’ input restituiscono un output ecc.
Il currying mi risulta si possa ottenere, l’asterisco davanti ad un
argomento modifica il numero di parametri, no?
Essendo ispirato anche a linguaggi funzionali direi che e’ normale tutto
questo.
Non ha le stesse restrizioni di un linguaggio funzionale che significa
ci puoi fare tanta altra roba ma anche che aumenta il rischio di errore.
“puoi” != “devi”
Ci mancherebbe
Il giorno mar 9 giu 2015 17:22 Luca P. [email protected]
ha
scritto:
puoi != devi
–
Luca P.
[email protected]