#module Devel where
import Data.Attoparsec.Char8
import Data.Char (ord)
int :: Parser Integer
int = do
x <- digit
return $ toInteger $ ord x - ord '0'
#とするとParserはモナドとして使えるように見えるんですが
#このモジュールをロードして:iしてもinstance宣言が出てこないんですが、これはなぜ?
#それとData.Attoparsec.Typesというやつをimportするとinstance宣言が見えるんですが、Data.Attoparsec.Char8のParserと衝突します。どういう風にimport宣言を書くとうまく使えますかね。
#instance 宣言をしているモジュールを読まないと、instance 宣言はでてきません。
#こいつの場合、Data.Attoparsec.Typesってことですよね
#それともInternal.Types?それは無理ですよね。
#GHCi の :info で見えないからといって、ソースで Monad として使えているのだから、気にしないというのが正解だと思います。
#うーん。
#たとえば、Control.Arrow,Control.Applicative,Control.Monadをimportしている前提で以下のコードを試してみます。
#liftM2 ((*10)>>>(+)) (Just 3) (Just 4)
#こいつはJust 34になりますね。
#liftM2 ((*10)>>>(+)) :: (Num r, Monad m) => m r -> m r -> m r
#なので期待通り。
#Maybe a同様にParser aもモナドなら
#こいつに適用できると思ったんですよね。
#あ、エラーになってたと思ったんだけど…
#うまく動作するようになった。
#何か勘違いしてたんかな。
#なにやってたんだろ…
#すみません。疲れてるのかな。動作の方は何の問題もなく期待した通りでした。
#ありがとうございました。:iで正常にinstance宣言が表示されないのはwhyですが。
#@type (***)
#ここってlambdabot見てないのかな
#ああ、つまらない結論になってしまったかも。
#ガッカリなので寝るとしよう。
#一応profかけたいな
#ghcを入れた後、haskell-platformのインストール時にいきなりlibrary-profile:Trueでmakeするにはどうすればいいんでしょう?
#cabal-installを単独で入れてから.cabal/configの変更をしてからhpのmake?
##最初からやってくれてるのか