haskell-ja > Archives > 2012/04/16

2012/04/16 14:02:57 UTCcutsea110
#
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宣言を書くとうまく使えますかね。
2012/04/16 14:09:01 UTCkazu
#
instance 宣言をしているモジュールを読まないと、instance 宣言はでてきません。
2012/04/16 14:09:35 UTCcutsea110
#
こいつの場合、Data.Attoparsec.Typesってことですよね
#
それともInternal.Types?それは無理ですよね。
2012/04/16 14:13:03 UTCkazu
#
GHCi の :info で見えないからといって、ソースで Monad として使えているのだから、気にしないというのが正解だと思います。
2012/04/16 14:15:28 UTCcutsea110
#
うーん。
#
たとえば、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もモナドなら
#
こいつに適用できると思ったんですよね。
#
あ、エラーになってたと思ったんだけど…
#
うまく動作するようになった。
#
何か勘違いしてたんかな。
2012/04/16 14:26:10 UTCcutsea110
#
なにやってたんだろ…
#
すみません。疲れてるのかな。動作の方は何の問題もなく期待した通りでした。
#
ありがとうございました。:iで正常にinstance宣言が表示されないのはwhyですが。
#
@type (***)
#
ここってlambdabot見てないのかな
2012/04/16 15:15:29 UTCcutsea110
#
ああ、つまらない結論になってしまったかも。
#
ガッカリなので寝るとしよう。
#
一応profかけたいな
2012/04/16 22:42:26 UTCcutsea110
#
ghcを入れた後、haskell-platformのインストール時にいきなりlibrary-profile:Trueでmakeするにはどうすればいいんでしょう?
#
cabal-installを単独で入れてから.cabal/configの変更をしてからhpのmake?
2012/04/16 22:50:53 UTCcutsea110
#
http://trac.haskell.org/haskell-platform/ticket/87#comment:1
#
最初からやってくれてるのか