
I am looking for something with a type signature like this: grabAcidState :: AcidState as -> IO as basically I just want to return my data from database abstractly or based on a class. The reason for this is because I want to have a class instance of state and then I can implement my library like so: data MyCoolData :: MyCoolData T.Text class HasCoolData a where getCoolDataList :: a -> MyCoolData grabStoredList :: HasCoolData as => AcidState as -> IO [MyCoolData] grabStoredList as = do cs <- grabAcidState as return $ getCoolDataList cs and users could implement it like so: data AppState = AppState { someCoolData :: [MyCoolData] } instance HasCoolData AppState { getCoolDataList = someCoolData } However trying to implement this simple behavior has been proving quite difficult. Maybe I am making this too difficult and I should just have a seperate AcidState datatype for my library. Any help would be appreciated.
participants (1)
-
Kyle Hanson