Haskell のデータ型には代数的データ型と呼ばれる、C言語などでいう構造体や列挙体の性質を兼ね備えたものが用いられる。次の例は二つのInt型の値をフィールドに持つ二次元の座標、Point2D 型を定義したもので、これは代数的データ型の構造体的な性質を示す。先頭のトークン「data」は代数的データ型の宣言であることを示す予約語である。ここで最初の Point2D はデータ型名を表し、次の Point2D はデータコンストラクタ名を示す。data Point2D = Point2D Int Intorigin :: Point2Dorigin = Point2D 0 0    -- データコンストラクタは関数のように適用できるデータコンストラクタは値を定義するための特殊な関数といえる。データコンストラクタは後述するパターンマッチによって値を取り出す際にも用いられる。次の例はトランプの4つのスーツを示す Suit 型を定義したものである。Spade、Heart、Club、Diamond の4つのデータコンストラクタが定義されており、Suit 型の式は Spade、Heart、Club、Diamond のいずれかの値をとる。data Suit = Spade | Heart | Club | Diamond次の例は String 型の値を格納する二分木の型である。Leaf（葉）は String 型の値を持ち、Branch（枝）は Leaf もしくは Branch である Tree 型の変数を二つ持つ。これは代数的データ型の構造体的な性質と列挙体的な性質の両方が現れている。data Tree = Leaf String | Branch Tree Treeorganisms :: Treeorganisms = Branch animals plants    -- Branch (Branch (Branch (Leaf "Lion") (Leaf "Tiger")) (Leaf "Wolf")) (Leaf "Cherry")animals = Branch cats (Leaf "Wolf")cats = Branch (Leaf "Lion") (Leaf "Tiger")plants = Leaf "Cherry"GADTと呼ばれる機能を使うと、コンストラクタの型を明示してデータ型を定義することもできる。{-# LANGUAGE GADTs #-}data Maledata Femaledata Person s where    Adam :: Person Male    Eve :: Person Female    Child :: Person Male -> Person Female -> Int -> Person a
Haskell は遅延評価を基本的な評価戦略とする。ほとんどの言語では関数の呼び出しにおいて引数に与えられたすべての式を評価してから呼び出された関数に渡す先行評価を評価戦略とするが、これに対し Haskell ではあらゆる式はそれが必要になるまで評価されない。次の定数 answer は評価すると常に 42 を返すが、その定義には未定義の式を含む。answer = const 42 (1 `div` 0)ここで、const は常に第1引数を返す定数関数である。また、`div` は整数の除算を行う演算子であり、1 `div` 0 は 1 / 0 に相当し、この値は未定義であり、この部分を評価すればエラーになる。正格評価をする言語でこのような式を評価しようとすると、ゼロ除算によるエラーになるであろう。しかし 上記の定数 answer を評価してもエラーにはならない。const は第1引数をつねに返すので第2引数を評価する必要はなく、第2引数に与えられた式 1 `div` 0 は無視されるので評価されないからである。遅延評価がデフォルトで行われることにより、不要な計算は省かれ、参照透過性により同じ式を複数回評価する必要もなくなるため、Haskell では最適化によって計算効率の向上が期待できる場合がある。ただし、頻繁に新たな値を計算する場合は正格評価のほうが効率がよく、必要に応じてseq関数やBangPatterns拡張による明示により正格評価もできる。
ここではあまり他の言語では見られない Haskell 特有の機能を中心に解説する。ここでは説明していないが、現代的な実用言語では常識となっているガーベジコレクション、例外処理、モジュール、外部関数の呼び出し、正規表現ライブラリなどの機能は、Haskell にも当然存在している。
2001年シーズンは3試合に登板したが失点はなかった。2002年は7試合に登板したが打ち込まれた。2003年は6月8日の広島東洋カープ戦ではプロ入り初先発し、6回無失点で勝利投手となった。これがプロ入り初勝利となった。9月16日の読売ジャイアンツ戦では先発して3勝目を挙げたが、この試合ではチームは19点を挙げ大勝した。なお巨人は1試合における最多失点は19だが、この年はこの試合も含め、2回も記録してしまった。この年は中継ぎだけでなく先発で12試合投げた結果、40試合で4勝6敗防御率3.34の成績を残した。また投球回数は97回だったが、翌年以降はリリーフ専門となったため、これがプロでのシーズン最多投球回数である。2004年から完全にリリーフに専念する。中継ぎ右腕として自己最高の63試合に登板し、防御率2.03、9勝4敗の成績を挙げてオールスターゲーム初出場、さらに最優秀中継ぎ投手のタイトルを獲得した。この年からクローザーを任された岩瀬仁紀とともに、中日中継ぎ陣のエースとしての地位を確立した。しかし、西武との日本シリーズ第3戦にアレックス・カブレラに逆転満塁ホームランを打たれ、負け投手となった。2005年は前半戦だけでリリーフとして10勝をマークした。背筋痛で後半に離脱したが、それでも57試合に登板して防御率3.14と活躍した。2006年、この年も中継ぎとして活躍するが、二段モーションからのフォームチェンジに苦労したこともあって、安定した状態がなかなか長続きせず、不安定な投球から打ち込まれて継投失敗となる場面がたびたび見られた。交流戦では活躍したが、同リーグとの対戦では防御率4点台と冴えなかった。また日本ハムとの日本シリーズ第2戦では1点ビハインドの8回にフェルナンド・セギノールに試合を決める2ランホームランを打たれた。2007年、新しいフォームにも馴染んだのか、前半では防御率0点台で推移する驚異的なピッチングも見られた。後半は疲れからか打たれる場面も間々あったが、シーズンを通しては安定したピッチングで、先発陣が決して好調とは言えなかったこの年のチームを支え、チームの勝利の方程式の一角を引き続き担った。3年ぶりに60試合以上に登板して防御率2点台、リーグ3位で自己最多の38HPを記録、中日のCS制覇・日本一・アジアシリーズ制覇に貢献した。アジアシリーズにおいてはSKワイバーンズとの決勝戦で8回裏に同点ホームランを浴びてしまい、これが中日での最後のマウンドとなった。