minus1216
unsafePerformIO
は禁断だとか型安全性を壊すとかヤバいとかいう話はよく見かけるのですが、実際に`unsafePerformIO` が使われる場面ってどんなのがあるのでしょうかunsafePerformIO
は禁断だとか型安全性を壊すとかヤバいとかいう話はよく見かけるのですが、実際に`unsafePerformIO` が使われる場面ってどんなのがあるのでしょうかIO
値関数が純粋な関数と思えるようになった、みたいな時に、 IO
関数を純粋関数に変換するためにも使える気がします。 vector
パッケージの Data.Vector.Storable
モジュールとか bytestring
パッケージとかが好例ですが、 bytestring
なんかは unsafePerformIO
よりもっと危険な関数を使っているので、昔はよくバグっていたみたいです。stdin, stdout, stderr :: Handle
の実装でも使われていますね.