« 書籍 97 Things Every Programmer Should Know | トップページ | Kindle カーソル 移動 »

2011年4月 4日 (月)

Haskell 型と値

Haskellを勉強中です。

「Learn You a Haskell for Great Good!」という本の一部を翻訳します。


タイプのコンストラクタと値のコンストラクタを区別することが重要です。
データタイプを宣言したとき、「=」より左側は、タイプのコンストラクタです。
右側は、値のコンストラクタです。

次のような記述で考えると、


data Test a = Test a a [Char]

mySum :: (Num a ) => Test a -> a
mySum (Test x y _) = x + y

まず、Test a というタイプコンストラクタを宣言しています。
このaには、Intなどのタイプがきます。

つぎに、Test a a [Char]が、データのコンストラクタで、aがIntの場合、
Test Int Int [Char]と等価です。

関数mySumの定義をみると、ここは、宣言したデータ型 Test aを引数にとり、aを返す、となります。
具体例では、Test Int -> Int です。

関数の実装は、Test a型の値を受け取り、演算しています。

それぞれ、型を記述しているのか、値を記述しているのか、考える必要があるのです。

(実施結果)


*Main> mySum (Test 1.0 2.0 "abc")
3.0

|

« 書籍 97 Things Every Programmer Should Know | トップページ | Kindle カーソル 移動 »

Haskell」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1049865/39492261

この記事へのトラックバック一覧です: Haskell 型と値:

« 書籍 97 Things Every Programmer Should Know | トップページ | Kindle カーソル 移動 »