Hatena::ブログ(Diary)

西尾泰和のはてなダイアリー

2010-07-13

Haskell Quizの解答編を書いた

Hacker's Cafe Blog: Haskell Quiz Answer

英語の練習がてら長々と書いているけど、ざっくりとまとめると

  • Haskellでは値の定義のオーバーロードができる
    • showとか定義したことあるよね
  • 返り値の型でオーバーロードされた定義から選択することが可能(引数の型が同じで帰り値の方が違う関数をオーバーロードできる)
  • しかも引数を取る必要もない
  • (+) や (==) は t -> t -> t なので x + (1::Int) は x を (x::Int) にする効果がある
  • 0などの数値リテラルは (Num a) => a なので (0::Int) にも (0::Integer) にもなりうる

というわけでaやbはIntとして評価した場合とIntegerとして評価した場合で異なる値になる変数で、cがInt、dがIntegerで演算によって適当にaやbの型をコントロールしていたのでした。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/nishiohirokazu/20100713/1278980775