-- cached :: IO a -> IO (IO a)
main = cached heavy >>= \ cachedHeavy -> 云々
こういうのでいいならunsafePerformIOは不要