自分のプロジェクトで Haskell をもっと使いたいと思っており、Web アプリで Haskell を使い始めることができれば、その目的に本当に役立つと思います。私はハップスを1、2回試しましたが、地面から降りるのに苦労しました。私が使用できる、より単純でより従来型の (ランプのような) フレームワークはありますか?
8 に答える
2011 年現在の最良のツールは次のとおりです。
Haskell を中心とした Web 開発コミュニティは、これらのコミュニティ間の競争で繁栄してきました。
著者はここでフレームワークを比較しています: Haskell の Snap と Yesod Web フレームワークの比較
HAppsを使用する場合は、HAppsアプリケーションとして開発されているこの優れたサンプル駆動型チュートリアルを確認することをお勧めします 。HAppsチュートリアル
最高の機能/コード サイズ比のアイデアで MFlow を開発しました。MFlow は他のフレームワークを念頭に置いて作成されていませんが、Haskell を限界まで使用して Web アプリケーションの問題を解決し、Web プログラミングのノイズとエラー率を大幅に削減します。MFlow アプリケーションのナビゲーション全体は、コンパイル時に安全です。標準の Web ライブラリを使用します: WAI、formlets、stm、blaze-html..
自分で判断してください: これは 3 ページの完全なアプリケーションです。ループでは、2 つの数値を要求し、合計を表示します。好きなときに戻るボタンを押すことができます:
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"
少し変更するだけで、状態を永続化できます。
http://hackage.haskell.org/package/MFlow
ここに例があります: http://haskell-web.blogspot.com.es/
これは、wiki からの Haskell に関する Web 関連のブログ投稿のリストです。
さらに、次の大きな Haskell Web フレームワークはWASHです。
また、Apple webobjects ベースのドメイン固有言語もあります。
Web アプリケーション インターフェイス(WAI) は、アプリをその上に構築できる非常に優れたベース レイヤーです。ルーティングやテンプレート作成などのハックには、WAI と組み合わせてうまく機能する素敵なライブラリがたくさんあります。
Yesod は良い選択です。O'Reilly のYesod Web Framework Bookをオンラインで見つけることができます。
wiki のHaskell Web Development記事にリストされているように、CGI と (x)html コンビネーター ライブラリを使用できます。Haskellでの Web プログラミング用のライブラリ、フレームワークなどのより大きな概要は、Haskell での Web プログラミングの実践 にあります。