Haskell Platform を更新した

Windows に インストールしてある Haskell Platform を更新した.

インストールしてあったのは 2012.4.0.0 だった.最新版の 2014.2.0.0 をインストールした.GHC のバージョンが 7.4.2 から 7.8.3 にあがったので変更点を調べてみた.

以下,主観的に気になった4点.

64bit

ついに windows に 64bit GHC が提供された.これでアホなプログラム書いてメモリ4G以上使用しても大丈夫だよ! あとは,何気なく Int 使っても桁溢れしにくくなることが地味うれしいと思う(こういうの気づきにくい).

LambdaCase

今までラムダ抽象化+Case式は次のように記述していた.

\x -> case x of
    Nothing -> 0
    Just n  -> n

これを次のように簡潔に記述できる.

\case
    Nothing -> 0
    Just n  -> n

言語拡張 LambdaCase にて有効化できる.具体的には次のようにソースファイルに記述する.

{-# LANGUAGE LambdaCase #-}

もしくはコンパイル時に -XLambdaCase とオプション指定する.ghci の中で有効にしたい場合は次を入力する.

:set -XLambdaCase

MultiWayIf

次の例を見れば分かるはず. 言語拡張 MultiWayIf で有効化される.

if | x == 0    -> [...]
   | x > 1     -> [...]
   | x < 0     -> [...]
   | otherwise -> [...]

Overloaded Lists

次のようなソースコードが認識される.今までは fromList 等の関数が必要だった.これ,型推論して適切な関数を適用しているのだろうか.

['0' .. '9']             :: Set Char
[1 .. 10]                :: Vector Int
[("default",0), (k1,v1)] :: Map String Int
['a' .. 'z']             :: Text

あと,パターンマッチにもリスト表記が使用できるようである.

f [] = ...          -- f (toList -> []) = ...
g [x,y,z] = ...     -- g (toList -> [x,y,z]) = ...

これ内部的には view-pattern syntax というものを使用しているらしい.詳細は追えてないが…

言語拡張 OverloadedLists で有効化できる.