#パッケージをGHC-7.4.2+HP2012.2.0.0な環境に追従させようとしてて、cabal buildは通るんだけど、emacs+haskell-mode+ghc-modではエラーになる。
#Network/Pcap/Enumerator.hs:16:8:
Could not deduce (transformers-0.2.2.0:Control.Monad.IO.Class.MonadIO
m)
arising from a use of `tryIO'
from the context (MonadIO m)
bound by the type signature for
enumOffline :: MonadIO m =>
FilePath -> Enumerator (PktHdr, ByteString) m b
at Network/Pcap/Enumerator.hs:(15,1)-(18,29)
Possible fix:
add (transformers-0.2.2.0:Control.Monad.IO.Class.MonadIO
m) to the context of
the type signature for
enumOffline :: MonadIO m =>
FilePath -> Enumerator (PktHdr, ByteString) m b
In the expression: tryIO
In a stmt of a 'do' block: h <- tryIO $ openOffline path
In the expression:
do { h <- tryIO $ openOffline path;
let iter = enumPcap1 h step;
Iteratee $ runIteratee iter }
Network/Pcap/Enumerator.hs:22:8:
Could not deduce (transformers-0.2.2.0:Control.Monad.IO.Class.MonadIO
m)
arising from a use of `tryIO'
from the context (MonadIO m)
bound by the type signature for
enumLive :: MonadIO m =>
String
-> Int -> Bool -> Int64 -> Enumerator (PktHdr, ByteString) m b
at Network/Pcap/Enumerator.hs:(21,1)-(24,29)
Possible fix:
add (transformers-0.2.2.0:Control.Monad.IO.Class.MonadIO
m) to the context of
the type signature for
enumLive :: MonadIO m =>
String
-> Int -> Bool -> Int64 -> Enumerator (PktHdr, ByteString) m b
In the expression: tryIO
In a stmt of a 'do' block:
h <- tryIO $ openLive name snaplen promisc timeout
In the expression:
do { h <- tryIO $ openLive name snaplen promisc timeout;
let iter = enumPcap1 h step;
Iteratee $ runIteratee iter }
Network/Pcap/Enumerator.hs:28:19:
Could not deduce (transformers-0.2.2.0:Control.Monad.IO.C
#型宣言消せばpassる。
#型は MonadIO => FilePath -> Enumerator (pktHdr, ByteString) m bとなってて
#型宣言を消してロードしてから:tで確認すると
#あ、違った。型宣言は MonadIO m => PcapHandle -> Enumerator (PktHdr,ByteString) m bで
#型宣言消してロードしてから:tで確認すると、
#transformers-0.2.2.0:Control.Monad.IO.Class.MonadIO m => PcapHandle -> Enumerator (PktHdr, ByteString) m bってでる。
#:i MonadIOするとDefined in `Control.Monad.IO.Class'のMonadIOを指すんで、importしてるのも間違ってないはずなんだけど、why?
#気になるのはghc-pkg listするとtransformersは0.2.2と0.3が入ってるんだが、なぜC-cC-lした時には0.2.2の方が選ばれるんだろう?
#型あってるように見えるんだけどな。。。不思議なことを言う。
#なんかControl.Monad.IO.Class.MonadIOってフルネームで言ってくるのが変な気もするが。
#tryIOで文句言ってるのかと思って:t tryIOしてもやはりtransformers-0.2.2.0:Control.Monad.IO.Class.MonadIO m => IO b -> Iteratee a m bだから同じMonadIOだし。
#つかcabal buildが通っている段階で型宣言は正しいんだよね?(てか型宣言自体は以前のバージョンと変わってない)
#ghc-mod は、複数の GHC がある場合に、うまく動かないかもしれません。
#じゃあ、ghc-7.4.1+HP2012.2.0.0を入れた後でghc-7.4.2を入れたのが不味い?
#ps aしてみたらC-cC-lした時のghciは7.4.2の方が起動されているっぽい。
#もしかしてtransformersが2バージョン入っているのがダメ?
#ghc-pkg checkは今のところquietでござる。
#Emacs の exec-path をうまく調整すれば、うまく行く可能性もあります。
#exec-pathチェックしたけどこれでいいんじゃないかなー。
#複数のGHCってのはもしかしてOSのパッケージシステムと自力インストールと共存しているとかそういう意味ですか?
#であれば全部自力インストールでござる。
#GHCとHPに関しては--prefix=/usr/pkgしてmake installしてる。
#GHC 7.4.2 でうまく動かしたいということですか? そうなら、もしかすると ghc-mod を GHC 7.4.2 でコンパイルする必要があるかもしれません。
#GHC API の挙動は謎が多いのです。
#えっと、GHC-7.4.2を入れてからcabal install ghc-modしたので、そういう意味ではいいんですよね?
#HPを入れる時には7.4.1なのでそのあたりは7.4.1でコンパイルされちゃってるか。
#HPで入ったライブラリ以外は7.4.2でコンパイルされててその辺がおかしいのかな。
#もっかい作り直すか。今のところ7.4.2が欲しいわけじゃないし。。。
#つかHPが7.4.2入れてからmake installできれば幸せなのに。。。
#GHC APIってghc-pkg listした時に出てくる(ghc-7.4.2)とかいうパッケージか。
#ghc-7.4.1+HP2012.2.0.0で環境を作り直したけど変わらず。
#ふと思ってghciを起動してそこから:lでロードしたらエラーになった。orz
#これってどういうコト?
#emacsもhaskell-modeもghc-modも関係なくてghciの問題?
#なんか良く分からんが、別のプログラムでcabal configure --user ; cabal buildは成功するのにghc --make Main.hsだとアウト
#なんか同じようなところでエラーになるんだよなー
#l
#なんかghciバグバグしてないか??
#:lとか:mとか微妙な挙動してる気がする
#さっきはloadできたのに今はできない。なにか変えたっけかな。
#haskell wikiみてたら7.4.1のGHCiも結構問題あったみたいだしghc-modは関係なさげだからとりあえずもう一度7.4.2に上げてみる。
#とりあえず7.4.2にupdateしてtransformersやmtlが2バージョン入ってたのを回避したらうまく動作するようになった。
#依存関係の問題だとすればcabalなのかな。回避できたからいいけど正直不便だわ。