Haskell Platform を更新した
コンテンツ
Windows に インストールしてある Haskell Platform を更新した.
インストールしてあったのは 2012.4.0.0 だった.最新版の 2014.2.0.0 をインストールした.GHC のバージョンが 7.4.2 から 7.8.3 にあがったので変更点を調べてみた.
- https://downloads.haskell.org/~ghc/7.6.1/docs/html/users_guide/release-7-6-1.html
- https://downloads.haskell.org/~ghc/7.8.1/docs/html/users_guide/release-7-8-1.html
以下,主観的に気になった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
で有効化できる.
作成者 Toru Mano
最終更新時刻 2023-01-01 (c70d5a1)