Je voudrais utiliser Haskell plus pour mes projets, et je pense que si je peux commencer à l'utiliser pour les applications web, cela aidera vraiment cette cause. J'ai essayé des happs une ou deux fois mais j'ai eu du mal à décoller. Y a-t-il des frameworks plus simples/plus conventionnels (plus proches de la lampe) que je peux utiliser ou devrais-je simplement donner un autre essai?Quel est le moyen le plus simple d'écrire des applications web dans Haskell?
Répondre
Voici a list of web related blog posts about Haskell from the wiki.
En outre, la prochaine grande infrastructure Web Haskell est WASH.
Et il y a un Apple webobjects based domain specific language.
Vous pouvez utiliser CGI et une bibliothèque de combinateurs (x) html, comme indiqué dans l'article Haskell Web Development du wiki. Un aperçu plus large des bibliothèques, des frameworks, etc. pour la programmation web dans haskell peut être trouvé dans Practical web programming in Haskell.
Si vous décidez d'aller avec Happs vous voudrez probablement à la caisse cet excellent tutoriel commandé par exemple qui est développé comme une application Happs: HApps Tutorial
Les meilleurs outils à partir de 2011 sont:
La communauté de développement web autour de Haskell a été en plein essor sur la concurrence entre ces communautés.
Les auteurs comparent même leurs cadres ici: Comparing Haskell's Snap and Yesod web frameworks
Yessod serait un bon choix, vous pouvez trouver en ligne Yesod Web Framework Book O'Reilly.
Le Web Application Interface, WAI, est un très bon calque de base sur lequel vous pouvez créer des applications. Il y a beaucoup de bonnes bibliothèques sur le hackage pour le routage, le template, etc. qui fonctionnent bien en combinaison avec WAI, ce que je fais.
J'ai développé MFlow avec l'idée du rapport fonctionnalité/code le plus élevé. MFlow est fait sans autre cadre en tête, mais pour utiliser Haskell à la limite pour résoudre les problèmes des applications web afin de réduire drastiquement le bruit et le taux d'erreur dans la programmation web. La navigation complète dans une application MFlow est sûre au moment de la compilation. Il utilise des bibliothèques Web standard: WAI, formlets, stm, blaze-html ..
Jugez-en par vous-même: Ceci est une application complète avec trois pages. En boucle, il demande deux nombres et montre la somme. vous pouvez appuyer sur le bouton de retour à votre guise:
module Main where
import MFlow.Wai.Blaze.Html.All
main= do
addMessageFlows [("sum", transient . runFlow $ sumIt)]
wait $ run 8081 waiMessageFlow
sumIt= do
setHeader $ html . body
n1 <- ask $ p << "give me the first number" ++> getInt Nothing
n2 <- ask $ p << "give me the second number" ++> getInt Nothing
ask $ p << ("the result is " ++ show (n1 + n2)) ++> wlink() << p << "click here"
L'état peut être rendu persistant avec une petite modification.
http://hackage.haskell.org/package/MFlow
Il y a des exemples ici: http://haskell-web.blogspot.com.es/
CGI est très simple, en particulier sur les systèmes exécutant Apache. Vous venez de créer un exécutable qui imprime une page HTML (ou une partie de celle-ci). Vous pouvez analyser la chaîne url (GET) et obtenir des données POST du système à l'aide de variables d'environnement. C'est simple mais construire un système à partir de ces pièces demande du travail. –