Functional programming in Typescript with fp-ts. 際際滷s supporting my talk at Roma JS meetup. In italian. Talk: https://youtu.be/eCWqEUne9bw
1 of 29
Download to read offline
More Related Content
RomaJS June 2022
2. Settiamo le
aspettative
Si basa tutto su
esperienze personali e
di team
Un cheat sheet
volutamente
semplicistico
Linizio di un percorso
Molti dipende
in caso, siete ancora in
tempo per laperitivo
4. Usata da 16M di Cittadini
Pi湛 di 7000 Enti locali e nazionali
~6M messaggi/settimana
App IO
lapp dei servizi pubblici italiani
github.com/pagopa/io
PagoPA S.p.A.
societ pubblica ad alto livello
specialistico
www.pagopa.it
Sviluppa progetti innovativi e
gestisce piattaforme tecnologiche
Molti progetti attivi per la
digitalizzazione
5. Agenda
1. fp-ts: cos竪 e perch辿 usarla
2.Tipi ed operazioni essenziali
3.railway-oriented programming
https://bit.ly/fpts-code
7. Cos竪 fp-ts e
perch辿 usarla
Una libreria Typescript per
browser e Node.js
Ispirata a Haskell, PureScript e
Scala, permette di sviluppare
con i pi湛 popolari pattern della
programmazione funzionale
github.com/gcanti/fp-ts
8. Si basa su regole, teoremi e assiomi che
determinano la capacit di due o pi湛
oggetti (funzioni?) di combinarsi tra loro, e
il comportamento di questa interazione
A e B possono combinarsi?
In quanti e quali modi?
Che significato ha il risultato della loro
combinazione?
Functional Programming
9. Un motore di regole
e che regolano la
componibilit
Un sistema di
tipi che analizza
il codice
10. Un motore di regole
e che regolano la
componibilit
Un sistema di
tipi che analizza
il codice
11. il compilatore guida nellindividuare
tutti i path e gli edge case
continua challenge con il
compilatore
tight feedback loop
Esperienza di sviluppo
14. Data Type Si usa per
Option Un valore che c'竪 o 竪 null-ish
Either Validazione, operazione che pu嘆 fallire
TaskEither Operazione asincrona che pu嘆 fallire
Operazione Si usa per
is* type narrowing di un TypeClass in un sotto-tipo
from* Costruire un Data Type a partire da un valore o un altro Data Type
map Applicare una trasformazione al valore contenuto senza cambiare
il sotto-tipo
chain Applicare una trasformazione al valore contenuto cambiando il
sotto-tipo
fold Far convergere i due rami della computazione
16. Railway-oriented
programming
Many examples in functional programming
assume that you are always on the
happy path. But to create a robust real
world application you must deal with
validation, logging, network and service
errors, and other annoyances.
So, how do you handle all this in a clean
functional way?
Scott Wlashin
Tecnica di programmazione resa famosa da
Scott Wlashin
Domain
Modeling Made
Functional
F# for fun
and profit
28. Due parole
conclusive
Quanto presentato 竪 sufficiente per iniziare a
implementare funzionalit nei nostri progetti
web con fp-ts
fp-ts 竪 molto pi湛 profonda di cos狸, offre
funzionalit e costrutti evoluti e sofisticati
Nella nostra esperienza abbiamo notato che,
usando costrutti pi湛 potenti, il vantaggio di
codice viene vanificato dallaumento della
curva di apprendimento
Onboarding, onboarding, onboarding!
Ci ha aiutato a convergere su uno modo comune
di scrivere il codice
29. un Monoid rimane un Monoid
che tu lo conosca o meno
cit. Federico Biccheddu
ゃャ