HDBC スナップレットを使用するためのチュートリアルでは、「HDBC スナップレットを設計する際の目標の 1 つは、関数を Handler モナドまたはスナップ関連のモナドから分離することでした。これにより、同じクエリを外部でも実行できるようになりました。コマンドライン ツールなどのスナップ コンテキスト。」
私はこれだけを達成しようとしています。
型クラス HasHdbc には定義があります
class ( IConnection c
, ConnSrc s
, MonadCatchIO m
)
=> HasHdbc m c s | m -> c s where
getHdbcState :: m (HdbcSnaplet c s)
Snap アプリのこの型クラスのインスタンスを次のように定義します。
instance HasHdbc (Handler App App) Connection IO where
getHdbcState = with dbLens get
HasHdbc 型クラスを使用して、Snap コンテキストの外でこのコマンド ライン ツールを作成する方法をスケッチできますか? 私は基本的なレベルで型クラスを理解していますが、型シグネチャgetHdbcState :: m (HdbcSnaplet c s)
は、たとえば IO モナドのインスタンスを定義するのが少し難しいです。