我使用網絡http包(http://hackage.haskell.org/package/HTTP-4000.2.2)將http客戶端編碼爲學習項目。如何從BrowserAction monad中提取BrowserState?
有一個Network.Browser模塊定義了getBrowserState函數。
大概只是一個蹩腳的初學者問題,但如何獲取來自BrowserAction monad的BrowserState記錄如果Network.Browser模塊不導出數據構造函數或記錄的提升函數?
import Network.Browser
-- getBrowserState :: BrowserAction t (BrowserState t)
extractBS :: BrowserAction t (BrowserState t) -> BrowserState t
-- ??? implementation ???
此外如何進一步處理BrowserState字段,如bsCookies,bsDebug,bsProxy等? (http://hackage.haskell.org/packages/archive/HTTP/4000.2.2/doc/html/src/Network-Browser.html#BrowserState)
感謝您的解釋。我確實懷疑getBrowserState返回一些通常存儲的狀態,而不是當前操作中的狀態。順便說一句。從IO獲取某些東西可以用< - 表達式來完成,但我相信這是你所知道的。 –
@DavidUnric:是的,do-notation可以讓你假裝你已經從monad中取出了一些東西,但是你實際上正在做的是用簡單的東西做出合成動作。除非你運行它,否則你不會得到任何東西。 – hammar
@hammer>是的,如果我思考一段時間,現在我甚至覺得愚蠢,甚至想到haskell中的「全局」/存儲狀態:)提到IO monad的提取也不例外,正如您澄清的那樣。它只是一個monad動作中組合函數的一部分。 –