foo :: String -> IO String
Web サービスにリクエストを送信し、データをダウンロードして解析し、文字列を返す関数があるとします。同じリクエスト文字列が与えられた場合、Web サービスは常に同じ文字列を返すことを私は知っています。これは、「安全に」使用unsafePerformIO
し、決して問題を引き起こさないことを知るのに十分な情報ですか? それとも、他のことも確認する必要がありますか?
編集:これを検討している理由はdeduce :: (String -> String) -> String
、入力関数をパラメーターとして受け取り、さまざまなパラメーターで評価することによって関数のいくつかのプロパティを推測する関数があるためです。ここで、この Web サービスのいくつかのプロパティを推測したいと思いますが、型シグネチャを変更するなど、大幅に変更unsafePerformIO
する必要があります。これは、プロパティを推測する他のすべての関数も変更する必要があることを意味します。deduce
deduce :: (String -> IO String) -> String