úÎDX@ö!      None 8Information about cought exceptions in various routines   eceptions   eceptions   eceptions  eceptions  exceptions  Log failures IO-exceptions-free ! IO-exceptions-free " # that returns $ instead of % & that returns $ instead of % IO-exceptions-free ' Make paths in  relative to given ( )*+ ,    )*+ , None &A representation of directory layouts  Invariants:   second argument is never D _ _ _ or F _ _ _ itself   third argument is never T _ _   second argument is never T _ _   third argument is never T _ _ Directory node  File node File contents Emptyness, nothing found here %Type synonym to save some acrobatics -;All this crazy stuff is only to get do-notation basically. Bind (<-)) in that do-notation is useless at best  (You only can get ()s from ) and harmful at worst # (If you manage to create your own   values with something more  interesting than ())  ./01-2345678   ./01-2345678NoneMake layout as specified 3For example, suppose you are in an empty directory    % tree  . and you've written simple layout:    layout = do  directory "baz" $  file_ "twey"  directory "foo" $ do  directory "bar" $ do  file_ "quuz"  file_ "tatata"  file_ "quux" 6then running it should result in this directory tree:   % tree  .  %%% baz  %   %%% twey  %%% foo  %%% bar  %   %%% quuz  %   %%% tatata  %%% quux 1Check directory layout agrees with specified one &For example, suppose there is a tree:    % tree  .  %%% baz  %   %%% twey  %%% foo  %%% bar  %   %%% quuz  %   %%% tatata  %%% quux then you can write:    layout = do  directory "baz" $  file_ "twey"  directory "foo" $ do  directory "bar" $ do  file_ "quuz"  file_ "tatata"  file_ "quux"  and running  check layout "." should result in [] 9:;<Root directory List of warnings =>Root directory List of failures ?@ 9:;<=>?@NoneTarget A from the current  top (if possible) layout ^? textNothinglayout ^? file "foo" . textJust "not empty".layout ^? directory "bar" . file "quux" . textJust "something"Target ( from the current  top (if possible) layout ^? name Just "foo" layout ^? directory "bar" . name Just "baz"!layout ^? directory "quux" . nameNothinglayout & name .~ "boo"tF "boo" (T "not empty" ()) (D "bar" (F "baz" (E ()) (F "quux" (T "something" ()) (E ()))) (F "swaks" (E ()) (E ()))) Target all Filpaths from current  layer layout ^? names Just "foo"layout ^.. names["foo","bar","swaks"]"layout ^.. directory "bar" . names["baz","quux"]+layout & directory "bar" . names %~ reversetF "foo" (T "not empty" ()) (D "bar" (F "zab" (E ()) (F "xuuq" (T "something" ()) (E ()))) (F "swaks" (E ()) (E ()))) Target next   layout ^? name Just "foo"layout ^? next . name Just "bar"layout ^? next . next . name Just "swaks"#layout ^? next . next . next . nameNothingTarget  under the current  top if it happens to be a file layout ^? file "biz"Nothinglayout ^? file "swaks" Just (E ())&layout ^? directory "bar" . file "baz" Just (E ())Target  under the current % top if it happens to be a directory layout ^? directory "foo"Nothinglayout ^? directory "bar":Just (F "baz" (E ()) (F "quux" (T "something" ()) (E ())))Target  under the current  top layout ^? node "foo"Just (T "not empty" ())layout ^? node "bar":Just (F "baz" (E ()) (F "quux" (T "something" ()) (E ())))layout ^? node "what"NothingNone%Declare file with specified contents Declare empty file )Declare directory with specified listing Declare empty directory Create layout from directory ACanonicalizes path before traversing, generally understands only Q regular files and directories and ignores anything else it could not understand       B      !" #$%& '()%&*+,-./0%&1'(+23456789:;<=>?@ABCDEFGHIJK'LMNdirectory-layout-0.4.0.0System.Directory.Layout.Errored System.Directory.Layout.Internal System.Directory.Layout.TraverseSystem.Directory.Layout.LensSystem.Directory.LayoutLayoutExceptionRFDEFECFCDanyfailcreateDirectory createFile fileExistsdirectoryExistsreadFilerelativeNodeDFTELayoutmakechecktextnamenamesnextfile directorynodefile_ directory_ fromDirectorydirectory-1.2.0.1System.Directory text-0.11.3.1 Data.Text.IO writeFile doesFileExistbase Data.EitherEitherghc-prim GHC.TypesBooldoesDirectoryExistGHC.IOFilePathtryio createFileX readFileX $fMonadNodecompareFilePath>>*$fTraversableNode$fFoldableNode $fBindNode$fApplicativeNode $fApplyNode $fFunctorNode $fMonoidNode$fSemigroupNode $fDefaultNodeRunTrunRunT applyTraverse changeDirmakeFile makeDirectory checkFilecheckDirectoryData.Text.InternalText