HOOGX~xa  bc d ef g h iklm n o p r s  tu vwxy zUwvHuuj()G->AllAnyArithExceptionArrayExceptionAsyncExceptionBool BufferModet BufferStatepCChar(CClockCDevCDoublekCFloatCInoCIntCIntMax:CIntPtrCLDoubleCLLongQCLong CModeCOffyCPid1CPtrdiffCSCharCShortY CSigAtomicCSizeCSsizeCTimeOCUCharCUIntCUIntMaxwCUIntPtr/CULLongCULongCUShortWCWcharChanCharComplex ConsoleEventConstr ConstrRepDataRep}DataTypeiDouble DynamicE12E6Errno ExceptionExitCodeFDTypeFdrFixityiFloat GeneralCategoryHandle HandlePosn HandleTypeHashDataIO IOErrorType IOExceptionIOModerId]InsertsYIntInt16 Int32f Int64 Int8 IntPtr| Integer< Lexeme. Maybe Ordering P Permissions QSem QSemNz ReadPa ReadPrecH STM/ SeekMode StableName TVar ThreadId Timeout TyCon TypeRep Unique Version Weak WordL Word16 Word32 Word64Y Word8 WordPtrZipList[::][]M TraversableFoldableMonadFix Applicative Alternative MonadPlusFunctorMonadFunctorMonadFunctor Applicative ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq PrintfArgStorableDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEq PrintfArgStorableDataEqOrdNumEnumIntegralBitsShowRealBoundedIxRead PrintfArgStorableDataNumEnumIntegralBitsShowRealBoundedIxReadOrdEq PrintfArgStorableDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEq PrintfArgStorableDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEq Typeable1EqOrdShowReadTypeableOrdEqDataDataEqTypeableDataShowEqOrdTypeable Typeable1 Typeable1ShowReadEnumIxOrdEq Typeable1FunctorMonadFunctorMonad MonadPlusFunctorMonad MonadPlusTypeableTypeableShowReadOrdEqMonad MonadPlus MonoidDataReadShowBoundedEnumIxOrdEq TraversableFoldableMonadFix Applicative AlternativeFunctorMonad MonadPlusShowEqRead PrintfArgBitsDataReadEqOrdNumEnumShowIxRealIntegral ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq PrintfArgStorableDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEq PrintfArgStorableDataEqOrdShowNumEnumIntegralReadBitsRealBoundedIx PrintfArgStorableDataShowNumEnumIntegralReadBitsRealBoundedIxOrdEq PrintfArgStorableDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEq PrintfArgBitsStorableDataReadShowNumBoundedEnumIxRealIntegralEqOrdEqFunctor ApplicativeShowReadEnumIxOrdEqEqShowEqShowMonadFix ApplicativeFunctorMonadShowEqShowEqShowDataEqShowIxBoundedShowReadEnumOrdEq PrintfArgStorableDataEqOrdNumReal FractionalRealFracFloating RealFloatShowEnumReadShowEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqEqShowReadOrdEqShowEqEq HasResolution HasResolutionTypeableShow PrintfArgStorableDataEqOrdNumReal FractionalFloatingRealFrac RealFloatShowEnumReadTypeableDataShowShowEqShowEqShowEqReadShowEnumOrdEqTypeable Typeable1 PrintfArgIsCharStorableDataReadShowBoundedEnumIxEqOrd Typeable1 ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqEqShowReadOrdEq StorableDataReadShowBoundedEnumIxOrdEqShowOrdEqShowOrdEqShowOrdEqMonoidBoundedShowReadOrdEqMonoidBoundedShowReadOrdEqArrow ArrowChoice ArrowApply ArrowLoop MonoidDataReadShowBoundedEnumIxEqOrdy4 ByteCountCDirCDirentCFLockCGroupCLconvCPasswd CSigactionCSigsetCStatCString CStringLenfCTermiosaCTm\CTmsWCUtimbufRCUtsnameMCWString= CWStringLen! ClockTickConIndexDeviceID  EpochTimeFDFileIDFileMode FileOffsetFilePathFinalizerEnvPtr FinalizerPtrGenericsGenericBoGenericM_GenericQTGenericRIGenericT@HandlePosition6IOError(IPrLimitMicroPicoPrecProcessGroupID ProcessIDRational RawBufferReadS|STRepO SampleVar-ShowSString[]Char[]Char[]CharaMVar(,)IntMVarasaState#s(#,#)State#saa[]Char[](,)a[]CharMutableByteArray# RealWorldRatioIntegerCPidCPidIntFixedE12FixedE6CLong(,)IntInt IOExceptionIntegeraammararmamaacacaaFunPtrPtraIO()envaFunPtrPtrenvPtraIO()[]CharCOffCModeCInoCIntCTimeCDevIntCClock(,)PtrCWcharIntPtrCWchar()()()()()(,)PtrCCharIntPtrCChar()()()()()()()()()CSize(5u:u[tanbQkc)_dZeWfQgPhhMiFjFkFFlCm@n{=o/:p 6q5r/s)t&u#v#w zN iU p\ lc ij sq tx ZipList##1#3#6l#8Z#e*#oX"r af!i t e b2!h m o d e IOModea!n !d!l!e"! HandleTypeu9!f@!fG!eN!rU! BufferStatepm!a*"m!p~!e!d!a!m!o!n!a!d! WrappedMonadr!r!o!w! WrappedArrowo"n "a"d" WrappedMonadr1"r8"o?"wF" WrappedArrowr_"df"Word##1#3"6"8"p"t"r"WordPtrWord84"Word64#"Word64#2"Word326 #Word16Word#a1#k8#Weak#K#Weak##a#Word84s##z#Word642###Word326###Word16Worde#r#s#i#o#n#Versionn$pR$s$e$r$e%$r,$r3$o:$rA$ IOErrorTypepY$e`$rg$cn$au$s|$e$l$e$t$t$e$r$GeneralCategoryd'&i%s$a`%u$p$p$o$r$t%e %d%o%p%e%%r,%a3%t:%iA%oH%nO% IOErrorTypetg%in%su%f|%i%e%d%c%o%n%s%t%r%a%i%n%t%s% IOErrorTypeq &t%Unitu&e&Uniquee.&fj&r:&fA&lH&oO&wV&ArithExceptioniq&nx&e&d&e&l&e&m&e&n&t&ArrayExceptionhT)i(r,(v(y&c'p&e&a$'r'e 'p'TypeRepb+'l2'e9'Typeable1'2'3'4'5'6'7n' Typeable7 Typeable6 Typeable5 Typeable4 Typeable3 Typeable2 Typeable1o'n(TyCona(r(TVaraI(u8(e?(BoolvP(eW(r^(se(al(bs(lz(e( Traversablem )t(l(e(c(a(s(e(l(e(t(t(e(r(GeneralCategorye)e)x )p')i.)r5)e<)dC) IOErrorTyper[)eb)ai)dp)i)k|)i)l)l)e)d)AsyncExceptiond)ThreadId#) ThreadId##/a?/eV.h-p?-t*u*y*mc*s*t!*e(*m/*e6*r=*rD*oK*rR* IOErrorTypebj*oq*lx*Lexemem*r*r*o*g*a*t*e*GeneralCategorySumSTa,m,o+r*e}+i+n+g+StringcK+r0+e7+p>+DataRepoR+nY+s`+tg+rn+ ConstrRepa+f+p+t+STretSTRepSTRefm+FDTyper+a+b+l+e+StorableSTMb,co,rI,t+,e2,#9,State#rP,aW,y^,STArraykv,o},v,e,r,f,l,o,w,AsyncExceptionl,e,n-p,t,r, StablePtr#- StablePtr#a-m$-e+- StableNameaF-cM-e-iY-n`-gg-cn-ou-m|-b-i-n-i-n-g-m-a-r-k-GeneralCategoryGeneralCategoryo-.u-t-d.o .w.n. ConsoleEventw4.ShowsG.ShowSe.mb.ii.cp.lw.o~.s.e.d.h.a.n.d.l.e. HandleTypek.f/m.o.d.e.SeekModer/o/m/e#/n*/d1/SeekModemF/pM/lT/e[/vb/ai/rp/ SampleVarIntegera 5e/i/g/h/t/Eithera2c2g1l1q 1s;0t/u/r/n/i0n 0o0r0d0e&0r-0ArgOrderoB0uI0rP0cW0e^0b0e0vo0av0n}0i0s0h0e0d0 IOErrorTypex0h0a0u0s0t0e0d0 IOErrorTypeu1s1y1 IOErrorTypear1u,1i31r:1eA1oH1rO1dV1e]1rd1ArgOrderry1g1ArgDescra1t1i1v1e1s1e1e1k1SeekModeu1l1a1r1f1i2l 2e2FDTypec2sp2u02p72d>2eE2rL2rS2oZ2ra2 Exceptionew2l~2e2r2r2o2r2 Exceptiono2n2e2r2r2o2r2 Exceptiond3l2RealfC3w3o3r"3l)3d03 RealWorldlo3rO3aV3c]3RealFracov3a}3t3 RealFloatReadb4h4m4pN4s?4w3r3i3t3e3h 4m3o3d3e4IOModea4n4d!4l(4e/4 HandleTypeReadSReadPrb4ei4cp4ReadPreco4d4e4IOModea4n4d4l4e4 HandleTypeu4f4f4e4r4 BufferStatet5w5bQ5d"5e)5v05i75c>5eE5FDTypeuX5f_5ff5em5rt5 RawBufferLexemei5o5Ration5a5l5Rationals5e5m5QSemn5QSemNa;9e8iq8oU8r]6tI6u/6n66c=6LexemerP6Ptre!8ir7on6c6d6t6o6c6o6l6e6r6r6o6r6 IOErrorTypeu6c6t6Producte6s7s 7g07i7d7 ProcessIDr77o>7uE7pL7iS7dZ7ProcessGroupIDn7v~7a7t7e7u7s7e7GeneralCategoryt7f7a8t7y7p7e7 PrintfTyper8g8 PrintfArgcG8f-8i48x;8FixityPreco\8lc8Poolcx8o8Picor8m8i8u8t8e8ArgOrders8s8i8o8n8d9s8 Permissionse9n9i9e#9d*9 IOErrorTyper9tG9tN9eU9r\9nc9mj9aq9tx9c9h9f9a9i9l9 Exceptiona9g9r9a9p9h9s9e9p9a9r9a:t :o:r:GeneralCategoryOpaquebO=p9<r;t:vT:e[:rb:fi:lp:ow:w~:ArithExceptionh:e:r:e;l;nU;p:s:y:m:b:o:l:GeneralCategoryu;n;c;t;u;a$;t+;i2;o9;n@;GeneralCategoryu\;mc;bj;eq;rx;GeneralCategorye;t;t;e;r;GeneralCategoryr;r;o;r; IOErrorTyped;Orde <r<i<n <g'<Orderinga*=e<tJ<a<dw<i[<ob<ni<OptDescre~<s<c<r<OptDescrr<g<ArgDescrn<p<u<n<c<t<u<a<t=i=o=n=GeneralCategoryq1=u8=e?=OpaquejV=e]=cd=tk=Objecte@o=u=m=Numa?b?mW?n>r>s7>t=a=h=i=n=g=Maybes=s=i>g >n>e>d">GeneralCategoryu>>cE>hL>tS>hZ>ia>nh>go> IOErrorTypee>p>DataReps>t>e>r>m>i>n>a>t>i>o>n> Exceptionp?a ?c?i?n?g&?m-?a4?r;?kB?GeneralCategorye^?te?hl?os?dz?e?r?r?o?r? Exceptionu?f?f?e?r?i?n?g? BufferModer?g@ArgDescrs@t@e%@d,@a3@t:@oA@mH@iO@cV@a]@ld@lk@yr@ ExceptionaCiBoAu@v@a@r@MVar#@MVar#t@aAv@a@r@#@MutVar#b AlAeAaAb&Ay-At4Ae;AaBArIArPAaWAy^A#eAMutableByteArray#rArAaAyA#A MutableArray#dXBnAaAoAiAdAMonoiddAMonadf8BpBlBuBs%B MonadPlusi?BxFBMonadFixi_BffBimBetBr{BlBsByBmBbBoBlBGeneralCategoryeBtBtBeBrBGeneralCategorycBrCo CMicrotDCy'Cb.Ce5CMaybehKCsRCyYCm`CbgConCluCGeneralCategorya*FeEiDoCtCOrderinggDs-DwCeCrCcCaCsCeClCeCtDt DeDrDGeneralCategorys4Do;DfBDpIDrPDeWDc^DieDslDisDozDnDArithExceptionoDfDfD ConsoleEventmpEnDeDb(EsDeDpDaDrDaDtEo ErEGeneralCategoryu/Ef6Ef=EeDErKEiREnYEg`E BufferModeiwEt~ELimitfFtExEeEmEeELexemetEeErEnEuEmEbEeErFGeneralCategorytFEithers1Ft8FLastlMFeTFi[FsbFliFipFKleisli#FuFsFtFMaybeInteger #_M1FM3-M6M8MdLgLlFLnHo|GphGsGxFIxcCGsGtGrGi#Gn*Gg1GIsStringhJGaQGrXGIsCharroGIPrIOaHeGmGrGeGfGIORefoGdGeGIOModer0HxGcGeGpGtHi HoHnH IOExceptionr7Ho>HrEHIOErrort[HybHpiHepH IOErrorTyperHrHaHyHIOArrayaKddKfJKiJlJrJtAIvHaHlHiHdHaHrIg IuImIe"In)It0I IOErrorTypeInt #J1J3J6J8qJc?JeIpIr{IeIpIDataReptIrIIntPtrgIrIrIuIpItIeIdI IOErrorTypee'JrJaJlJIntegralr.JIntegeroFJnMJsTJt[JrbJ ConstrRepInt84JInt64#JInt64#2JInt326JInt16Int#:+::+:tJiKa KlKqKu Ko'Kt.Ke5KGeneralCategoryiQKxXKFixityekKxrKoyKuKtKoKfKbKoKuKnKdKsKArrayExceptionpKpKrKoKpKrKiLa LtLeLt Ly'Lp.Le5L IOErrorTypelMLeTLg[LabLliLopLpwLe~LrLaLtLiLoLnL IOErrorTypenLoLrLeLHandlereLnLtLLexeme# MInt84M#"MInt6424M#;MInt326MM#TMInt16Inta'NeMpyMrMiMnMtMfMtMyMpMeM HPrintfTypeaMpMoMvMeMrMfMlNo NwNAsyncExceptionn'OrNs8NhNrDNeKNsRNoYNl`NugNtnNiuNo|NnN HasResolutiontNaNbNlNeN HashTabledNwNaNrNeNfNaOuOlOtO IOErrorTyped.Ol5OeQmQqPrPtPGenericT'P GenericT'GenericRGenericQ'Q GenericQ'GenericM'+Q GenericM'GenericBGeneric'liQcpQawQt~QeQgQoQrQyQGeneralCategory #WaWdRWfmViATlSoRr@RuQnQcRpQtRr RFunPtrt!Ro(Rr/RFunctoraGRcNRtURi\RocRnjRaqRlxR FractionallWSrReRmRaRtRGeneralCategoryiRgRnRpRtRrR ForeignPtrc SoSnStSe&Sn-St4Ss;SForeignPtrContentsd^SaeSblSlsSezSFoldableoSaStSFloat#1TcSiSrSeSpSDataRepnSgSFloatingoTn TsTtTr"T ConstrRepFloat#lUnTrTxWTeTicTtjTyqTFixitydTFixedsTtTFirstaTlTiTqTuToTtTeTGeneralCategoryzUe UrUeDUp Ut'Ur.U FinalizerPtrnKUvRUpYUt`UrgUFinalizerEnvPtreUh>Vi'VmVoUpUaUtUhUFilePathfUfUsUeUtU FileOffsetoVdVeVFileModed.VFileIDaEVnLVdSVlZVeaVHandleeWfVg~VeVnVeVrViVcVFFFormatiVoVrVmVaVtVFFFormatxVeVdWFFFormatxWp!Wo(Wn/We6Wn=WtDWFFFormatFDFdtjWyqWpxWeWFDTypelWsWeWBoolFloat 1Z6ZiZnYoYpYqYr,YxWcXiWtWcXeXfIXsXuXcXc&Xe-Xs4Xs;XExitCodeaPXiWXl^XueXrlXesXExitCodexXcXeXpXtXiXoXnX ExceptionoXdXeXExitCodeeXpXtYi YoYnY Exceptionr3YnqYo?YrFYcMYaTYl[YlbY ExceptionoxYErrnoOrderingEqoYcYhYtYiYmYeY EpochTimefYLexemec.ZdZuZm ZEnumo ZEndol5Zo~writablewritable ::  Permissions -> Bool:$ PermissionsBoolsetPermissionssetPermissions :: FilePath ->  Permissions -> IO ()FilePath PermissionsIO()%The setPermissions operation sets the permissions for the file or directory. The operation may fail with: setCurrentDirectorysetCurrentDirectory :: FilePath -> IO ()oXFilePathIO()If the operating system has a notion of current directories, setCurrentDirectory dir changes the current directory of the calling process to dir. The operation may fail with:  searchable searchable ::  Permissions -> BoolhR PermissionsBool renameFile renameFile :: FilePath -> FilePath -> IO ()΅FilePathFilePathIO()renameFile old new changes the name of an existing file system object from old to new. If the new object already exists, it is atomically replaced by the old object. Neither path may refer to an existing directory. A conformant implementation need not support renaming files in all situations (e.g. renaming across different physical devices), but the constraints must be documented. The operation may fail with: renameDirectoryrenameDirectory :: FilePath -> FilePath -> IO ();FilePathFilePathIO()renameDirectory old new changes the name of an existing directory from old to new. If the new directory already exists, it is atomically replaced by the old directory. If the new directory is neither the old directory nor an alias of the old directory, it is removed as if by removeDirectory. A conformant implementation need not support renaming directories in all situations (e.g. renaming to an existing directory, or across different physical devices), but the constraints must be documented. On Win32 platforms, renameDirectory fails if the new directory already exists. The operation may fail with:  removeFile removeFile :: FilePath -> IO ()aJFilePathIO()removeFile file removes the directory entry for an existing file file, where file is not itself a directory. The implementation may specify additional constraints which must be satisfied before a file can be removed (e.g. the file may not be in use by other processes). The operation may fail with: removeDirectoryRecursiveremoveDirectoryRecursive :: FilePath -> IO ()җFilePathIO()removeDirectoryRecursive dir removes an existing directory dir together with its content and all subdirectories. Be careful, if the directory contains symlinks, the function will follow them. removeDirectoryremoveDirectory :: FilePath -> IO ()FilePathIO()8removeDirectory dir removes an existing directory dir. The implementation may specify additional constraints which must be satisfied before a directory can be removed (e.g. the directory has to be empty, or may not be in use by other processes). It is not legal for an implementation to partially remove a directory unless the entire directory is removed. A conformant implementation need not support directory removal in all situations (e.g. removal of the root directory). The operation may fail with: readablereadable ::  Permissions -> Bool PermissionsBool Permissions  Permissions :: Bool -> Bool -> Bool -> Bool ->  Permissionsh@BoolBoolBoolBool Permissions Permissionsdata  PermissionsmakeRelativeToCurrentDirectorymakeRelativeToCurrentDirectory :: FilePath ->  IO FilePath?"FilePathIOFilePath+makeRelative the current directory. getUserDocumentsDirectorygetUserDocumentsDirectory ::  IO FilePathݠ̠IOFilePathReturns the current user's document directory. The directory returned is expected to be writable by the current user, but note that it isn't generally considered good practice to store application-specific data here; use getAppUserDataDirectory instead. On Unix, getUserDocumentsDirectory returns the value of the HOME environment variable. On Windows, the system is queried for a suitable path; a typical path might be C:/Documents and Settings/user/My Documents. The operation may fail with: getTemporaryDirectorygetTemporaryDirectory ::  IO FilePath8'IOFilePathReturns the current directory for temporary files. On Unix, getTemporaryDirectory returns the value of the TMPDIR environment variable or "/tmp" if the variable isn't defined. On Windows, the function checks for the existence of environment variables in the following order and uses the first path found: The operation may fail with: The function doesn't verify whether the path exists. getPermissionsgetPermissions :: FilePath -> IO PermissionsZ:FilePathIO Permissions+The getPermissions operation returns the permissions for the file or directory. The operation may fail with: getModificationTimegetModificationTime :: FilePath ->  IO ClockTimeFilePathIO ClockTimeLThe getModificationTime operation returns the clock time at which the file or directory was last modified. The operation may fail with: getHomeDirectorygetHomeDirectory ::  IO FilePathIOFilePathReturns the current user's home directory. The directory returned is expected to be writable by the current user, but note that it isn't generally considered good practice to store application-specific data here; use getAppUserDataDirectory instead. On Unix, getHomeDirectory returns the value of the HOME environment variable. On Windows, the system is queried for a suitable path; a typical path might be C:Documents And Settingsuser. The operation may fail with: getDirectoryContentsgetDirectoryContents :: FilePath ->  IO [FilePath]FilePathIO[]FilePath(getDirectoryContents dir returns a list of all entries in dir. The operation may fail with: getCurrentDirectorygetCurrentDirectory ::  IO FilePathIOFilePathIf the operating system has a notion of current directories, getCurrentDirectory returns an absolute path to the current directory of the calling process. The operation may fail with: getAppUserDataDirectorygetAppUserDataDirectory :: String ->  IO FilePath6StringIOFilePathReturns the pathname of a directory in which application-specific data for the current user can be stored. The result of getAppUserDataDirectory for a given application is specific to the current user. The argument should be the name of the application, which will be used to construct the pathname (so avoid using unusual characters that might result in an invalid pathname). Note: the directory may not actually exist, and may need to be created first. It is expected that the parent directory exists and is writable. On Unix, this function returns $HOME/.appName. On Windows, a typical path might be
C:/Documents And Settings/user/Application Data/appName
The operation may fail with: findExecutablefindExecutable :: String -> IO (Maybe FilePath)~ZStringIOMaybeFilePathGiven an executable file name, searches for such file in the directories listed in system PATH. The returned value is the path to the found executable or Nothing if there isn't such executable. For example (findExecutable "ghc") gives you the path to GHC.  executable executable ::  Permissions -> BoolҺ PermissionsBool doesFileExist doesFileExist :: FilePath -> IO Bool[BFilePathIOBoolThe operation doesFileExist returns True if the argument file exists and is not a directory, and False otherwise. doesDirectoryExistdoesDirectoryExist :: FilePath -> IO Bool_FFilePathIOBoolThe operation doesDirectoryExist returns True if the argument file exists and is a directory, and False otherwise. createDirectoryIfMissingcreateDirectoryIfMissing :: Bool -> FilePath -> IO ()eBoolFilePathIO()createDirectoryIfMissing parents dir creates a new directory dir if it doesn't exist. If the first argument is True the function will also create all parent directories if they are missing. createDirectorycreateDirectory :: FilePath -> IO ()ӾFilePathIO(),createDirectory dir creates a new directory dir which is initially empty, or as near to empty as the operating system allows. The operation may fail with: copyFilecopyFile :: FilePath -> FilePath -> IO ()aFilePathFilePathIO()(copyFile old new copies the existing file from old to new. If the new file already exists, it is atomically replaced by the old file. Neither path may refer to an existing directory. The permissions of old are copied to new, if possible. canonicalizePathcanonicalizePath :: FilePath ->  IO FilePath+FilePathIOFilePathtGiven path referring to a file or directory, returns a canonicalized path, with the intent that two paths referring to the same file/directory will map to the same canonicalized path. Note that it is impossible to guarantee that the implication (same file/dir <=> same canonicalizedPath) holds in either direction: this function can make only a best-effort attempt. directorypackage  directoryZlibrary for directory handling This package provides a library for handling directories.  Directorymodule System. Directorye8System-independent interface to directory manipulation. System Directory directory1.0.0.0Ghttp://hackage.haskell.org/packages/archive/directory/1.0.0.0/doc/html/Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/directory