2008-09-09 7 views
19

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

1

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.

+0

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. –

4

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

0

Il y a aussi Hope (lien dépréciée), bien qu'il ne semble pas avoir gagné autant de traction que HApps et WASH. Cependant, le site a également été calme pendant environ un an.

2

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.

4

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/

Questions connexes