Haskell では、 GHC 9.0 から -XLinearTypes
言語拡張が使えるようになり、線型型によるリソース管理に敏感な API を定義できるようになりました。
線型型は、Rust の所有権システムに類似した型システムであり、引数をきっかり一回消費する関数やデータ型を定義し、コンパイル時にリソースのリークがないか型検査によりチェックできるようになります。応用例は多くありますが、たとえば、純粋な可変配列や並列処理、use-after-free のないGC外アロケーション、Destination-Passing Style による効率的なデータ初期化、より型安全なストリーム処理、他言語とのリソースの安全な受け渡しなどがより型安全に行えるようになります。
本講演では、線型型が有効化された Haskell = Linear Haskell により新しくどのようなプログラムが書けるようになり、Haskell による実用的なソフトウェア開発でどのように役立つのかについて、時折 Rust と比較などしつつお話します。また、現在議論が行われている Linear Constraints や Zero-Copy Compact Regions が導入された場合、未来の Linear Haskell がどう変わっていくのかについても簡単に紹介したいと思います。
線型型、型理論、リソース管理、Linear Haskell、Haskell、Destination-Passing Style、Linear Constraints