Real World Haskell 第6章 Using Typeclasses
Numeric Types 数の計算(+ などの演算子や sin などの関数)にタイプクラスが必要なのは不思議な感じがするが、ハスケルの扱える数の型の種類が数多いのを見ると必要性が分かる。 ちなみに列挙すると、Double, Float, Int, Int8, Int16, Int32, Int64, Integer, Rational, Word, Word8, Word16, Word32, Word64 がある。それらの詳細はRWHの表に詳しい。 これらの演算が全て同じ + 記号でできるのもタイプクラスのおかげだ。 Numeric クラスの演算子は括弧をつけることによって前置演算子に返ることができる。例えば 1 + 2 は (+) 1 2 と表記することが可能だ。 Numeric クラスの演算子や関数は非常に多いが、RWHに表でまとめてある。Numeric クラスのインスタンスの型は異なる者どうしの演算はできない。変換のための関数が用意してある。例えば Double -> Int は truncate, Int -> Double は fromIntegral などだ。異なる型のデータの演算はこれらで明示的に変換して行わないと型エラーになる。詳細は RWH に詳しい。 Equality, Ordering, and Comparisons 同等性の比較や、順序付けのためのタイプクラスがあり、それぞれ Eq, Ord が標準で定義してある。Eq クラスの演算子は == と /= で、Ord クラスには >=, <= などがある。 Automatic Derivation deriving キーワードを使って自動的にクラスにインスタンスを登録する方法について書いてある。deriving キーワドの使い方については前回の記事でも実践してみた。全てのユーザ定義のデータが自動登録できるわけではなく、できないものもある。その場合は、手動で演算子や関数を定義しなければならない。 このあたりは、本文を読んでわかりにくいと思うところはない。記事が短くなってしまったが、次の Typeclasses at Work: Making JSON Easier to Use 以下は実践的なタイプクラスの活用法の記事になっているようなので、ここで一区切りとしておく。
by tnomura9
| 2012-05-16 13:31
| Haskell
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||