皆さんはプログラムが正しく動作することをどうやって調べていますか? いちいち実行して確認している人もいるかもしれませんが,多くの人はツールや自作のプログラムを使って何らかの形でテストを自動化しているでしょう。ここ10年くらいで「テストの自動化」はプログラマにとってなじみの深い概念になりました。今回はHaskellでのテストの自動化を取り上げます。 型検査を利用する 実は,Haskellを使っていれば,すでにテストはある程度自動化されていると言えます。 第12回と第13回で説明したSTMでは,STMモナドという特別なモナドを使い内側にI/Oアクションを記述できなくすることによって,取り消し不可能なアクションが入り込むことを防いでいました。 Prelude Control.Concurrent.STM> atomically (writeFile "sample.txt" 12) <inter
![第16回 Haskellでのテストの自動化を考える](https://cdn-ak-scissors.b.st-hatena.com/image/square/bed39b5962a5d552c95b6d796db8f55e72d32943/height=288;version=1;width=512/https%3A%2F%2Fxtech.nikkei.com%2Fimages%2Fn%2Fxtech%2F2020%2Fogp_nikkeixtech_hexagon.jpg%3F20220512)