2009-10-01 6 views
5

私はWebサービスのアイディアを持っていますが、Webプログラミングには非常に新しいものです。 Djangoは素晴らしいと私はすぐに拾うことができる何かのように見えます。私はハスケルでたくさんの経験があります(また、Pythonではほとんどありません)、バックエンド以外のWeb関連のものを好きな言語で書くことを始めたいと思っています。もちろん、私がdjangoに行ってもhaskellコードが使えないなら、私はそれをしたくありません。Djangoサイトで使用するコンポーネントをHaskellで記述することはできますか?

私はいくつかのhaskell Webフレームワークを見てきました:hAppsはあまりにも複雑で文書化されていないように見えますが、turbinadoは親密に見えますが文書化されていません。そして、私はdjangoのような広く使用されているフレームワークを使用し、私はちょうどプラグインすることが私をたくさん助けます。しかし、私は、使用するフレームワークに関する他のアイデア、あるいは何らかの形でHaskellを使用しなければならないその他のオプションについて聞いてみるのはとても大変です。

答えて

4

「ウェブサービス」の意味によって異なります。

典型的なWebアプリケーション/ Webサイトを意味する場合は、データベースへの簡単なインターフェイス、HTML生成、簡単なHTTP処理、セッションおよびフォーム処理が必要です。あなたは本当にそれのためのまともなWebフレームワークが必要です。

ハスケルのための「良い」Webフレームワークはありません。 (その判断を下すために、私はドキュメンテーション、コミュニティー、確率がそれほど高くないという理由から、より新しいシャイナーアプローチなどの要因を含めています)。

「webby」よりもはるかに少ないものを意味する場合は、マップデータを返すサービスで、これらの機能の大部分を必要としない場合は、HackまたはNetwork.CGIのようなものを手に入れて、サービスを構築する基本的なHTTPインターフェイスを提供し、CGI/FastCGI。ダイナミックなWebサイトが必要な場合は、ちょうどDjangoのようなものを使うことができます。

また、Djangoコードから呼び出されるHaskellスタンドアロン実行可能ファイルを作成することもできます。しかし、直接Python < - > Haskell interopは可能ではない/実用的ではありません。

+2

"Python <-> Haskell interopは可能ではない/実用的ではありません。 - HaskellからPythonを呼び出すことは確かに可能で実用的であり、ライブラリが必要な場合には便利です。 hpaste2のpygmentsへのバインディングを参照してください。 –

+0

これは驚くかもしれませんが、すべてのWebアプリケーションが "フォームに記入して(検証エラーメッセージを表示して)結果をSQLデータベースに入れる"というわけではありません。 – jrockway

+0

@dons:元のポスターはPythonからHaskellを呼び出すことを話していたと思います。しかし、私はPythonを認識していませんでした<-> Haskell interop、私は修正しました:-) @ĵrockway:同意しました - そのため、私は "典型的な" Webアプリケーション/サイトを言ったのです。 – spookylukey

1

Pythonを学ぶと、多くの機能が備わっています。それは拾いやすいと非常に楽しいです。

Djangoの良い選択。

+1

pythonの機能以外の機能とは何ですか?もちろん反重力以外のもの(http://xkcd.com/353)。 –

+1

@Dominic:オブジェクトを変異させる能力。変数を再バインドする機能。ラムダ関数のサポートが制限されています(これは大きなものです)。関数の作成と部分的な適用のサポートの欠如。 – Chuck

3

Webサービスを構築するだけの場合は、Haskellでcgiまたはfastcgiプログラムを記述してWebサービス呼び出しを処理できます。

+0

これはdjangoやその代わりに使用できる方法ですか?私はdjangoの外でCGIを理解していますが、django/CGIがどのように連携しているかはまだ分かりません。 – jberryman

+0

@jberryman:DjangoがどのようにCGIで動作するのか分かりませんが、Webサービスを作成しているだけであれば、Djangoが適切なツールであるかどうかわかりません。 spookylukeyが言うように、標準のWebアプリケーションを意味するなら、それは私が話しているものとは異なるものです。データを返すURLを提供したいだけなら、私はDjangoをまったく使用すべきではないと思います。 – Amok

1

F#に行き、Fjで書かれたDjangoポートであるNDjangoをチェックしてください。完全公開:NDjangoは私のプロジェクトです。

+0

これは興味深い提案ですが、多くの人がMSの言語ではあまり熱心ではありません。 – Chuck

0

Haskellでデータベースと直接話したければ、Djangoデータベースの移行スクリプトを修正して、Yesod's Persistentのようなライブラリを使ってHaskellモデルコードを発行する必要があります。

関連する問題