Haskellでいつもimportしてるモジュールを聞いてみた
【ゆる募】Haskell使いの皆さんに質問です。 Prelude以外にいつもインポートするモジュールを教えて下さい。 例えば、Control.Monad, Data.Maybe あたりはよく使う気がします。qualified 付きか無しかも含めておねがいします。
2011-12-02 10:48:06場合によっては Data.List, Control.Arrow とかも? あとなんだろう。 ナンセンスor既出な質問だろうか…。
2011-12-02 10:49:51kazu_yamamoto さんが答えてくれました
.@keigoi do val <- m; let val' = func val と書いてあったら、迷わず do val <- func <$> m とすると吉です。変数が減るので、それだけバグも入り込みにくくなります。
2011-12-02 11:11:47@kazu_yamamoto do val <- liftM func val; をよく使っていたのですが、 慣れれば <$> のほうが直観的ですね。
2011-12-02 11:15:12.@keigoi liftM と fmap を区別するのはバカらしいですよ。数学的には同じものなので。liftM だと引数が増えるたびに、名前を変えないといけませんし。
2011-12-02 11:23:10@kazu_yamamoto あんまり専用の演算子を増やすのが好きでないのですが、イディオムだと思えば…ですね。 勉強させていただきます http://t.co/Ee6lfD1y
2011-12-02 11:28:23.@keigoi liftM、liftM2、liftM3 と関数が増えていく方が問題では? Applicative なら、基本的に <$> と <*> だけです。<$、<*、*> とかも使いますけど。
2011-12-02 11:30:46@ranha さんが答えてくれました
【重点】そもそもギョームでHaskell書いた事無いですがあんま調子乗ったこと書くとギョームで使ってる人に刺されるらしいですしまぁぼくそんな大したプログラム書けないのでどだい皆様のHaskell界隈を汚すつもりは無いです
2011-12-02 11:15:46@ranha unsafePerformIO はわかるんですけど、 unsafeCoerce 使う場面ってちょっとすぐに想像つかなくて楽しそう
2011-12-02 11:16:39Coq→HaskellのextractするとunsafeCoerceが入る(はず)けど、自分で書く事はあんまりないかも。一度気の迷いでランクN多相を使ったとき、なぜか型が合わなくて強行突破したことはある。あとは存在型に値をぶち込んだ時、取り出すにはunsafe要るか
2011-12-02 11:18:46@keigoi 一日何回も使います!とかそんなことでは無いですが… 例えばTypeable使うの面倒くさいとか、迂回策色々ある時でもバッと使っちゃうので、大体なんとかなる場合ですかね。 もう本当に使わざるを得ない かつ 面白かったケースで記憶に残ってるのない感じすらありますが。
2011-12-02 11:28:08GADTs使ってfake dependent typeしつつ証明書く + 実行してちゃんと値が欲しい(のでundefinedはダメ) 時とかは諦めて書きますけどこれはちょっと状況が状況というか頭の悪さの露呈してるだけなのでダメとして後は何かなぁ
2011-12-02 11:33:00