module AppStorage where import System.Directory(XdgDirectory(..)) import ReadFileF import WriteFile import HbcUtils(apSnd) import CompOps import NullF import Spops appStorageF :: (Read a,Show a) => String -> a -> F a a appStorageF :: forall a. (Read a, Show a) => String -> a -> F a a appStorageF String key a d = forall a c b. (a -> c) -> (b -> c) -> Either a b -> c either (forall a b. a -> b -> a const a d) (forall b a. b -> (a -> b) -> Maybe a -> b maybe a d forall a. a -> a id forall b c a. (b -> c) -> (a -> b) -> a -> c . forall {a}. Read a => String -> Maybe a readM) forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a b. (a, b) -> b snd forall a b e. (a -> b) -> F e a -> F e b >^=< forall {hi} {ho}. [hi] -> F hi ho -> F hi ho startupF [String key] (XdgDirectory -> F String (String, Either IOError String) readXdgFileF XdgDirectory XdgData) forall c d e. F c d -> SP e c -> F e d >=^^< forall a b. SP a b nullSP forall {a1} {b} {a2}. F a1 b -> F a2 a1 -> F a2 b >==< XdgDirectory -> F (String, String) (String, Either IOError ()) writeXdgFileF XdgDirectory XdgData forall c d e. F c d -> (e -> c) -> F e d >=^< (,) String key forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. Show a => a -> String show readM :: String -> Maybe a readM String x = case forall a. Read a => ReadS a reads String x of [(a x,String s)] | ReadS String lex String s forall a. Eq a => a -> a -> Bool == [(String "",String "")] -> forall a. a -> Maybe a Just a x [(a, String)] _ -> forall a. Maybe a Nothing