2008-09-09 13 views
19

Ich würde gerne Haskell mehr für meine Projekte verwenden, und ich denke, wenn ich anfangen kann, es für Web-Anwendungen zu verwenden, würde es wirklich dazu beitragen. Ich habe es ein oder zwei Mal probiert, hatte aber Schwierigkeiten, vom Boden abzuheben. Gibt es einfachere/konventionellere (mehr wie Lampen) Frameworks, die ich verwenden kann oder sollte ich einfach einen anderen Versuch geben?Was ist der einfachste Weg, um Web-Anwendungen in Haskell zu schreiben?

Antwort

1

Sie können CGI und eine (x) HTML-Kombinator-Bibliothek verwenden, wie im Artikel Haskell Web Development des Wikis aufgeführt. Eine größere Übersicht über Bibliotheken, Frameworks usw. für Web-Programmierung in Haskell finden Sie in Practical web programming in Haskell.

+0

CGI ist sehr einfach, vor allem auf Systemen mit Apache. Sie erstellen einfach eine ausführbare Datei, die eine HTML-Seite (oder einen Teil davon) ausgibt. Sie können die URL-Zeichenfolge (GET) analysieren und POST-Daten mithilfe von Umgebungsvariablen vom System abrufen. Es ist einfach, aber ein System aus diesen Teilen zu bauen braucht Arbeit. –

4

Wenn Sie mit Happs entscheiden, gehen Sie wahrscheinlich wollen Sie dieses hervorragendes Beispiel angetrieben Tutorial zur Kasse, die als Happs Anwendung entwickelt wird: HApps Tutorial

0

Es gibt auch Hope (Link abgeschrieben wird), obwohl es scheint nicht so viel Traktion wie HApps und WASH gewonnen zu haben. Allerdings war die Website auch seit etwa einem Jahr ruhig.

2

Die Web Application Interface, WAI, ist eine sehr schöne Basisschicht, auf der Sie Apps erstellen können. Es gibt viele nette Bibliotheken auf Hacks für Routing, Templating usw., die gut in Kombination mit WAI funktionieren, was ich auch tue.

4

Ich entwickelte MFlow mit der Idee der höchsten Funktionalität/Code Größenverhältnis. MFlow wurde ohne ein anderes Framework entwickelt, um Haskell an die Grenzen zu bringen, um die Probleme von Web-Anwendungen zu lösen, um das Rauschen und die Fehlerrate bei der Web-Programmierung drastisch zu reduzieren. Die gesamte Navigation in einer MFlow-Anwendung ist zur Kompilierzeit sicher. Es verwendet Standard-Web-Bibliotheken: WAI, Formlets, stm, Blaze-html ..

Beurteilen Sie selbst: Dies ist eine vollständige Anwendung mit drei Seiten. In einer Schleife fragt es nach zwei Zahlen und zeigt die Summe an. Sie können die Zurück-Taste wie gewünscht drücken:

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" 

Der Zustand kann mit ein wenig Modifikation persistent gemacht werden.

http://hackage.haskell.org/package/MFlow

Es gibt Beispiele hier: http://haskell-web.blogspot.com.es/

Verwandte Themen