ここでは以降の解説を読む上で必要な の文法規則を簡単に説明する。 の構文は数学で用いられるものによく似せられていることに注意されたい。
型.
text :: String
関数と演算子.
なお、関数適用の優先順位はすべての演算子の優先順位よりも高い。
特徴的な機能.
遅延評価.
型推論.
他の言語、たとえば でこのような抽象的な関数を書こうとしても、 では返り値の値の型によって関数を選択するようなことはできない（引数の型によって選択するメソッドのオーバーロードは存在する）。そのため、関数の実装ごとに別の名前をつけてプログラマに明示的に選択させて解決させることになる。この方法は簡潔でわかりやすいが、抽象性の高さに基づく再利用性という点では のような多相には劣ってしまう。
代数的データ型.
データコンストラクタは値を定義するための特殊な関数といえる。データコンストラクタは後述するパターンマッチによって値を取り出す際にも用いられる。
GADTと呼ばれる機能を使うと、コンストラクタの型を明示してデータ型を定義することもできる。
無名関数.
関数のカリー化と部分適用.
さらに、次のようにも書き換えることができる。
カリー化によって、 のあらゆる関数は引数を部分適用することができる。つまり、関数の引数の一部だけを渡すことで、一部の変数だけが適用された別の関数を作り出すことができる。また、 では演算子を部分適用することすら可能であり、演算子の部分適用をとくにセクションと呼ぶ。
パターンマッチ.
 では関数の引数を様々な形で受け取ることができる。
複数の返り値を扱うのもタプルなどを利用して極めて簡明に書くことができる。
リストとリスト内包表記.
 で順序付けられた複数の値を扱うのにもっとも柔軟で簡潔な方法はリストを用いることである。次は四季の名前のリストである。
リストはその柔軟性から再帰的な関数での値の受け渡しに向いているが、任意の位置の要素にアクセスするためには参照を先頭からたどる必要があるのでランダムアクセスが遅い、要素を変更するたびにリストの一部を作り直さなければならないなどの欠点がある。このため にも配列が用意されており、高速な参照や更新が必要なプログラムではリストの代わりに配列を用いることでパフォーマンスを改善できる可能性がある。
型クラスとインスタンス.