在the tutorial for using the HDBC Snaplet中,它表示「設計HDBC snaplet時的目標之一是將函數與Handler monad或任何Snap相關的monad分開,以便相同的查詢也可以在Snap上下文之外運行,例如在命令行工具中。「你如何讓像HasHdbc這樣的Snaplet在Snap環境之外工作?
我正試圖完成這一點。
的類型類HasHdbc有定義
class ( IConnection c
, ConnSrc s
, MonadCatchIO m
)
=> HasHdbc m c s | m -> c s where
getHdbcState :: m (HdbcSnaplet c s)
一會定義這個類型類捕捉應用程序的一個實例是這樣的:
instance HasHdbc (Handler App App) Connection IO where
getHdbcState = with dbLens get
有人能畫出一個如何使這個命令行工具外Snap上下文,使用HasHdbc類型類?我理解基本級別的類型類型,但類型簽名getHdbcState :: m (HdbcSnaplet c s)
對我定義IO Monad的實例有一些挑戰。