IO()
これはおそらくモナドに関係するHaskellの初心者の質問です。
Happstack.Server
ファイルのアップロードに対する応答を生成する関数がプログラムにあります。
postFile = do methodM POST
decodeBody filePolicy
(tmp, name, meta) <- lookFile "upload"
ok $ concat ["A file! ", tmp, " || ", name, " || ", show meta]
それはうまくいきます。ここで、アップロードされたファイルのコンテンツと、そのローカルtempname、元の名前、およびコンテンツタイプのメタデータを表示したいと思います。これはすべてブロックで行われているのでdo
、私は
postFile = do methodM POST
decodeBody filePolicy
(tmp, name, meta) <- lookFile "upload"
contents <- readFile tmp
ok $ concat ["A file! ", tmp, " || ", name, " || ", show meta, "\n\n", contents]
しかし、それは私に何かが電話にかかっていることを教えてくれるように見える一連のエラーを私に渡しdecodeBody
ます。
...
/home/inaimathi/projects/happstack-tutorial/parameters.hs:23:15:
No instance for (Happstack.Server.Internal.Monads.WebMonad
Response IO)
arising from a use of `decodeBody'
Possible fix:
add an instance declaration for
(Happstack.Server.Internal.Monads.WebMonad Response IO)
In a stmt of a 'do' block: decodeBody filePolicy
In the expression:
do { methodM POST;
decodeBody filePolicy;
(tmp, name, meta) <- lookFile "upload";
contents <- readFile tmp;
.... }
In an equation for `postFile':
postFile
= do { methodM POST;
decodeBody filePolicy;
(tmp, name, meta) <- lookFile "upload";
.... }
...
ここで何が問題になっているのかわかりません。誰かが私を教育できますか?
EDIT3:
それは私が結論にジャンプすることを学びます。
私が得ていた追加のエラーはすべて、不適切にインストールされたライブラリが原因でした。私を片付けて~/.ghc
、それから再びインストールすることはそれをhappstack
修正しました。