我想要做以下的事情:一個方法getSessionToken
這將:緩存一定時間的結果,並返回一個緩存值
建立到服務器的請求,如果「
cachedSessionToken
」是過時的(由1個多小時前)一旦發出請求到服務器,這樣可以節省結果爲「
variable
」,然後返回它,每當getSessionToken
被稱爲
所以這個想法是緩存一個結果,並在需要時返回,否則首先請求服務器getSessionTokenRemote
,緩存它並且只有在返回結果後。我沒有興趣在具體實現的getSessionTokenRemote
,但是,它可能是這樣的:
getSessionTokenRemote :: IO String
-- or just
getSessionTokenRemote :: String
什麼是最合適的。
我想知道,我如何以純函數式語言如Haskell來做到這一點?
請問您能解釋一下''CacheInfo','newIORef'和'emptyCacheInfo'是如何實現的嗎? –
@Alex'newIORef'由['Data.IORef']提供(http://hackage.haskell.org/package/base-4.6.0.1/docs/Data-IORef.html#v:newIORef)。至於實現'CacheInfo'和朋友,那麼......你試過了什麼?什麼地方出了錯? –
我只是不知道如何「寫入」CacheInfo,因爲Haskell沒有變量。我如何以及在哪裏存儲Haskell的值? –