0

happstack -liteチュートリアルを実行する:

次のタイプの戻り値を持つ関数を作成しますServerPart Reponse

homePage :: ServerPart Response

ただし、Webルートのクラッシュコースでは、関数はシグネチャを次のように変更します。

homePage :: RouteT Sitemap (ServerPartT IO) Response

以前はServerPartTではなくServerPartがありませんでしたか?また、すべてのメソッドの型アノテーションを変更せずに、Webルートに切り替える簡単な方法はありますか?

4

1 に答える 1

3

ServerPart単に。として定義されtype ServerPart a = ServerPartT IO aます。Happstack 8では、これをに変更する可能性があります。これは、type ServerPart = ServerPartT IOのような型を記述できることを意味しますがRouteT Sitemap ServerPart Response、それまでは、ServerPartT型の同義語を「部分的に適用」できないため、直接使用する必要があります。ただし、同じタイプですつまり、ServerPart Responseはの単なるエイリアスですServerPartT IO Response

また、すべてのメソッドの型アノテーションを変更せずに、Webルートに切り替える簡単な方法はありますか?

あまり。私は早い段階で「ハンドラー」の独自のタイプを定義するのが好きです。それから、その定義を変更するだけです。たとえば、、、type Handler = ServerPart ResponseそしてhomePage :: HandlerWebルートを追加するときは、ハンドラーを再定義するだけtype Handler = RouteT Sitemap (ServerPartT IO) Responseです。

あなたのエディタはおそらく検索と置換機能を持っていますが、例えばVimでは:

:%s/:: ServerPart Response/:: RouteT Sitemap (ServerPartT IO) Response/g
于 2012-06-24T16:25:47.697 に答える