水曜日, 11月 12, 2008

Haskellを使ってみる (4)

久しぶりにちょっとだけHaskellをいじってみてました…といっても本当に久しぶりだったのでどうしていいのかも思い出すのに時間がかかってしまっていて、ほとんど何もできなかったりする訳なのですが orz

そうそう、ちょっと前にHaskell触っててこんなことぼやいたりしていたのですが、ほとんど独り言な質問にお答えを頂いてしまいましたー ヽ(´ー`)ノ 独り言でも何でも言ってみるもんですねー。

printf は
http://www.haskell.org/ghc/dist/current/docs/libraries/base/Text-Printf.html
ってのがありますが、
http://www.haskell.org/ghc/dist/current/docs/libraries/base/Numeric.html
のほうがよいかも。

ありがとうございます m( _ _ )m ねこさんもText.Printfは存じてはいたのですが、(IO a)しか返せないのかとばかり思っていました。リンク先のドキュメント読んでもどうやったらString型で返せるのか判らない orz … それ以前にHaskell関連の仕様書の表現に全然慣れなくて、意味を読み解けずにえらく難儀してます orz よくわからないので、力任せにprintfの返り値がStringだと思いこんだコードを書いてみたら、ちゃんと意図通りに動いていて驚きました↓。

(\\str->(read str :: Double)*2) (printf "%f" 2.0)

ねこさん的にはこれで十分な感じではありますが、確かにprintfはExceptionエラーを引き起こす可能性があるので気持ち悪いかもしれません。なのでshowFFloat, showEFloat, showGFloatを使う方がいいようですね。ねこさんはこれらの関数を知らなかったので、そのうち似たようなものを作ろうかと思っていました orz よけいな車輪の再発明しなくて済んでよかったよかった。あと、floatToDigitsも細かい事を自分でやろうと思った時には何気に便利そうですね。便利な情報をありがとうございました。

そしてなにより、

Show については、
data Point = Point {x :: Double, y :: Double} deriving (Eq,Show)
とかやるとよいです。

たしかにどっかでこういうのを見た記憶が。試してみましたら…すごい! 確かにこれくらいだいたい自明なんだからどうにかして!とか思ったりしてましたが、どうにかしてくれるんですねー。これは便利ですね。

匿名さん、大変勉強になりました!どうもありがとうございました!

0 件のコメント: