haskell-ja > Archives > 2011/03/02

2011/03/02 01:29:00 UTCkazu
#
ちなみに、Yesod はテンプレートという黒魔術を使っているので、恐ろしく型を書くのが難しいです。
#
僕が今作っている gitcab では、なんとか型を推測して書いたので、参考になるかもしれません。
#
https://github.com/kazu-yamamoto/gitcab/blob/master/GitCab.hs
2011/03/02 02:58:50 UTCcutsea110
#
(PersistBackend m, Control.Monad.IO.Class.MonadIO m) => ...みたいなやつです
2011/03/02 03:07:58 UTCkazu
#
m など、一般化しすぎているから大変なのではないですか? 単に IO と書けば、心はやすまりませんか?
2011/03/02 03:13:43 UTCcutsea110
#
いや私が一般化したわけではなく、たまたまリファクタリングで抽出した関数がそういう型になってて、単にIOではアウトなのです。
#
使ってない変数を_でうければいいのはもちろんなんですが、
#
全体のスタイルを統一しておいた方が分かりやすいのもあってちょっとどうしようかなーって思ってるところです。
2011/03/02 03:21:27 UTCcutsea110
#
とりあえず後回しにしてますが
2011/03/02 04:06:47 UTCcutsea110
#
とりあえず起動スクリプトを書かねば
#
http://surf.ml.seikei.ac.jp/~nakano/linux/init.d.html
#
こいつを参考にすればよさげー
2011/03/02 11:30:59 UTCcutsea110
#
だいぶ黙らせたんだけど意味がよくわからないやつもあったりしてorz
2011/03/02 12:06:23 UTCcutsea110
#
Warning: orphan instance: instance Item User
#
ってなにー?どうすればwarning消せるの?
2011/03/02 13:48:58 UTCnobsun
#
orphan instance は気にしなくていいじゃないかな。
#
インスタンス宣言しても、それをそのモジュールで利用しなければ出るワーニングだったような。
2011/03/02 14:17:41 UTCnobsun
#
importしたモジュールで宣言されているインスタンスは問答無用でインポートされますので、インスタンスを利用しないモジュールを作るとそのようなwarningが出ます。モジュール化するなら、クラス宣言とはわけて、インスタンス宣言だけのモジュールを作っておけばリスクは回避しやすくなります。それでもwarningがでるでしょうけど。
2011/03/02 14:23:06 UTCcut-sea
#
さんくす。
#
このインスタンス宣言を使っているのはCrudライブラリの方なので私の書くコードでは使うことはなさげ。単に使ってもらうために書いている感じ。だと思う。ってことで、しょうがないのかしらん。
2011/03/02 15:18:39 UTCmaoe
#
そのorphan instanceは型クラスItemともデータ型Userの定義とも違うモジュールでinstance Item User whereが書いてあるために出ています。
#
ここでは特に問題になってないでしょうから、単に無視するか-fno-warn-orphansをつけてwarningをoffにするのが良さそうです。
#
参考: http://d.hatena.ne.jp/maoe/20100902/1283358286
2011/03/02 15:21:24 UTCcut-sea
#
あ、なるほど、じゃあUserの定義はこちらで書いているから(実際にはTH)そっちに移せばよいのかな
#
お、消えたー。ありがとうございます。
#
DefaultingのWariningはどうすべぇかな
2011/03/02 15:26:27 UTCikegami__@twitter
#
わたしのでふぉると : -Wall -fno-warn-type-defaults -fbreak-on-error -fprint-evld-with-show -fwarn-unused-do-bind -fwarn-wrong-do-bind
2011/03/02 15:28:14 UTCcut-sea
#
-fwarn-unused-do-bindはやったんだけど、他はやってないな
#
type-defaultsで黙らせるのってどうなんでしょう?
#
丁度A Gentle Introduction...を読んでたんですが
#
Defaultingは静的型の言語の旨みを捨てているのでWarningがついている
#
ということは出しておく*べき*かとも思ったんですが
2011/03/02 15:39:59 UTCcut-sea
#
wrong-do-bindって...
2011/03/02 15:41:37 UTCikegami__@twitter
#
GHC flag 一覧 : http://www.haskell.org/ghc/docs/latest/html/users_guide/flag-reference.html
2011/03/02 15:50:38 UTCikegami__@twitter
#
わたしのでふぉると ghc/ghci フラグは、Cabal にかくものではないので、適当にしらべてくださいね…
#
たとえば -fprint-evid-with-show は ghci で >:print foobar するためのものなので、関係ないとかそういうのです
2011/03/02 15:55:44 UTCcut-sea
#
さんきゅー
#
defaultingに関しては::Intとかそういう風に型を指定してやれば消せるんですよね?
2011/03/02 15:57:40 UTCikegami__@twitter
#
はい
2011/03/02 16:00:44 UTCcut-sea
#
unused-do-bindについては _ <- ...で受けるなりすれば消せるんですが、
#
これについてはさすがにオプション指定で黙らせていいかなーって思ったんですが
#
cabalに書くのって一般的にどうなんでしょう?
2011/03/02 16:03:28 UTCikegami__@twitter
#
-fwarn-unused-do-bind って実際どうよ スレ 1 : http://www.mail-archive.com/haskell-cafe@haskell.org/msg74079.html
#
オレは Cabal に -fno-warn-unused-do-bind つけるけどね、な発言 : http://www.mail-archive.com/haskell-cafe@haskell.org/msg74212.html
2011/03/02 16:11:17 UTCcut-sea
#
http://www.mail-archive.com/haskell-cafe@haskell.org/msg74095.html
#
これもかな?Bryanの発言
2011/03/02 16:19:45 UTCcut-sea
#
うーん。型指定で黙ったけど、逆に美しくない...
#
(x, y, z) <- runFromPost' $ (,,) <$> ... <*> ... <*> (... :: FormInput s m Int)
#
とか激しく萎える
#
-fno-warn-type-defaultsにしようという結論
2011/03/02 16:21:33 UTCikegami__@twitter
#
default (Int, Double) ってファイルに書けばいいんじゃね
#
-fno-warn-type-defaults はありだとおもいますはい
2011/03/02 16:24:38 UTCcut-sea
#
じゃあアリアリな方向で。
#
一応今のケースではdefault (Int)で黙ったけど、今度Ingeterとかを欲しがってる箇所が同じモジュールに出てきたら萎えるからね。
#
これであとはナゾのDefinedしてっけど使ってねーよ警告のみになった。
2011/03/02 16:28:08 UTCikegami__@twitter
#
-f ではじまるのどうすっかなーとおもったら "fno-warn... site:hackage.haskell.org" と、f のまえのマイナスはずしてぐぐるのおすすめ
2011/03/02 16:28:14 UTCcut-sea
#
名前が分ればいいんだけどテンプレート中のものでu[aDyj]とか出てて特定できず。
2011/03/02 16:29:15 UTCikegami__@twitter
#
テンプレートのほげは、ぼくもしりたいです、どうしたらいいの…
2011/03/02 16:29:17 UTCcut-sea
#
束縛してるやつはどれも使ってるみたいだしなぁ。
#
とりあえずかなり静かになったからひとまずcommit