型チェックされた空でない文字列
Bellroyのブログ記事では、関数型プログラミングのアプローチを用いて、空文字列を型レベルで排除する手法を解説。Haskellの型システムを活用し、コンパイル時に空でない文字列を保証することで、ランタイムエラーを減らし、より堅牢なコードを実現する方法を紹介している。
背景メモ
Haskell(ハスケル)は純粋関数型プログラミング言語で、静的型付けが非常に厳格。型安全性(type safety)は「コンパイル時にエラーを検出し、実行時エラーを減らす」というパラダイム。
- 「空でない文字列(NonEmptyString)」を型レベルで保証するとは、文字列が空である場合をコンパイラが検出し、そもそも実行できないコードとして弾く技法。
- 通常のString型では空文字列("")も許容されるため、バグの原因になる。そこでSmart Constructorパターンやnewtype、依存型に近い拡張(DataKinds, GADTs)を使って「空文字列を渡せない関数」を作る。
- この記事を書いたBellroyは財布やバッグを扱うオーストラリアの企業だが、エンジニアブログで関数型言語の高度な話題を扱うことで技術力の高さを示している。
- 同じ問題はTypeScriptやPureScriptなど他の静的型付け言語でも議論されており、型によるドメインモデリングの発想が広がっていることを背景とする。