Haskell è un linguaggio funzionale puro che nel corso degli anni si è conquistato una compatta legione di fan. I suoi punti di forza sono velocità e praticità , a patto di superare il grosso scoglio iniziale costituito dal suo stile poco ortodosso che può essere fortemente disorientante per chi è abituato con i linguaggi tradizionali.
In questi anni Haskell ha accumulato un gran numero di librerie che vanno dalla costruzione di interfacce grafiche ai game engine. Ovviamente, all'interno di questo mondo in fermento non potevano mancare i Web Framework.
In questo articolo ve ne presenterà tre fra i più apprezzati, stabili ed utilizzati fornendo per ognuno qualche caso d'uso.
Happstack
Happstack è il web framework in Haskell più conosciuto e "anziano" dato che fece la sua prima apparizione nel 2005. àˆ estremamente modularizzabile. Il componente principale è happstack-server, un server HTTP integrato piuttosto completo che va accoppiato a qualsiasi delle altre librerie "sponsorizzate".
àˆ possibile scegliere una libreria per i template (Blaze HTML, Hamlet, HSP, HStringTemplate, ecc...), una libreria per la gestione dei form (reform), una per i database e così via. In pratica Happstack offre un ambiente in grado di far cooperare tutte queste librerie allo scopo di assemblare un ottimo Web Framework.
Happstack quindi è il framework meno monolitico, costruito come una collezione di librerie per lo sviluppo web.
ESEMPI:
- http://npaste.de/ -- Un servizio stiple pastebin scritto interamente con Happstack (trovate i sorgenti qui).
- La stessa homepage del progetto è scritta, ovviamente, con Happstack.
Snap
Snap, contrariamente a Happstack, punta ad offrire un framework completo e stand alone. Meno personalizzabile del primo ma sicuramente più semplice da utilizzare.
Snap è ancora in una fase molto attiva di sviluppo essendo un progetto relativamente recente (nato nel 2010, due mesi dopo Yesod). Tuttavia resta la piattaforma consigliata per chi vuole addentrarsi per la prima volte nel mondo dei Web Framework in Haskell.
ESEMPI:
- http://hpaste.org/ -- Il servizio pastebin ufficiale di Haskell è implementato con Snap.
- Anche l'homepage di Snap è scritta (ovviamente) con Snap.
Yesod
Yesod è un altro famoso, apprezzato e giovanissimo web framework in Haskell. Anche Yesod sfrutta un approccio modulare tant'è che alcuni dei suoi componenti principali (come Hamlet e Persistent) sono disponibili anche come librerie indipendenti.
La punta di diamante di Yesod è sicuramente il suo web server integrato (Warp) riconosciuto come il più veloce web server disponibile in Haskell.
Yesod è un framework ben documentato. Esiste anche un libro della O'Reilly dedicato al suo utilizzo. Sicuramente un punto a suo favore.
ESEMPI:
- Hoogle -- Hoogle, il celebre servizio per la ricerca delle funzioni di libreria Haskell utilizza gran parte dell'infrastruttura di Yesod.
- Patrick Brisbin Homepage -- L'homepage di uno degli sviluppatori di Yesod è un blog creato proprio con Yesod.