最近、私はunsafePerformIO
について読んでいます。何かお聞きしたいと思います。実際の言語が外部環境とやりとりできなければならないので、私は大丈夫です。だからunsafePerformIO
はいくらか正当です。明らかに純粋なHaskellインターフェイスが安全でない操作を隠すときを知る方法?
しかし、私の知る限りでは、明らかに純粋な(型から判断すると)インタフェース/ライブラリが実際に純粋であるかどうかを知るための迅速な方法は認識していません。unsafePerformIO
(ドキュメンテーションはそれを言及するために省略することができる)。 参照透過性が保証されていると確信している場合にのみ使用するべきですが、それについては知りたいと思います。
「参照透過性が保証されていると確信している場合にのみ使用する必要があることはわかっています。 Inは、内部操作が合理的な方法で外部に漏れない場合、つまり、そのようなものがフードの下で行われていることを伝える方法がない場合にのみ使用する必要があります。 – leftaroundabout
ところで、 'unsafePerformIO'を使って外部環境とやりとりすることは、まったくできないことです。すべてのエフェクトは、コードの内部にあると考えられています。つまり、シーンの背後に可変変数を使用してメモを実装するようなものです。 – ehird
@ehird:詳しい説明はありがたいですが、私が「環境」と書いたとき、私はそれを外部の(非ハズケル)ライブラリも含むもっと広い意味で意味しました。私はユーザーのやり取りについては考えなかった。 –