私は本当にハスケルが好きです。特に強い型のシステムです。私がHaskellのプログラムをコンパイルすると、一般にバグがなくなるか、少なくともそれに近いです。ハスケル型安全な空間の使用
しかし、ハスケルの主な問題は、未知のスペースの使用です。少なくともC++では、プログラムの領域使用量についてかなり確信が持てます。オブジェクトを構築して分解するときは非常に明確です。
ハスケルでは、折りたたみのような単純なものは、正しく書き込まなければ、サンクで大量のスペースを使用できます。メモリ不足のためにプログラムがクラッシュすることは、他のバグよりはるかに良いとは言えません。
私はこれらのスペースリークを避ける方法があることを知っていますが、これらのスペースリークを避けるための型安全な方法を探しています。私が間違ってしまうと、何らかのコンパイルエラーが発生します。プログラムが稼動しているときに私のプログラムがメモリ不足に陥ることを願っているだけではありません。例えば、アキュムレータが厳密でない場合、コンパイルエラーを持つフォールドと言ってもよいでしょう)
ハスケルにこのようなことがありますか?
リーク型システムの種類を制御する必要があり、この動物園http://blog.ezyang.com/2011/05/space-leak-zoo/を想定すると?ストリーミングリークの場合、導管で十分です。 –
サンクのリークなど。また、コンジットがスペース使用量を制御するために純粋なコードで動作する方法についても説明できますか?(例:リストで漏れているがコンジットではないもの) – Clinton
コンジットのような構造がいくつかあります。 iteratees、conduit、pipe、io-streamのほか、ストリーム融合と呼ばれる最適化を実行する高性能コンピューティングのライブラリも含まれます。 –