- IDEなどの開発支援機能を使用できない場合が少なくない
- ビルドが長すぎる(1時間前後)
- レコードフィールド名に非現実的な制約がある
以上の理由からサービス開発へのHaskellの使用を放棄した。
Haskellは以前はプロダクションレディだったかもしれないが今は少なくともサービス開発においてはそうではない。一度プロダクションレディになれば永遠にプロダクションレディでいられるわけではない。実用言語であり続けるためにはプログラミングの進歩とこれにともなう要件の変化に継続的に追従する必要がある。
補足
当然ながらコンテナOSで実行するためスタティックリンクが必須となる。
オプションを変えてテストする成果物とデプロイする成果物を変えるなど論外。
CIサーバーのキャッシュは小規模な実験的プロジェクトでも簡単に数GBに達してあふれるので無意味。
キャッシュできたとしても依存関係やStackのアプデごとに1時間かけて再構成しなければならず変化に極めて脆弱で気休め程度にしかならない。
ローカルビルドとリモートビルドに1時間ずつかかるような試行錯誤が困難で触りたくないと思われるコードベースや開発環境のプロダクトは死んだプロダクトだということを念頭に置かなければならない。