h$5'      !"#$%&None +  ca-patterns8A pattern in a 2-dimensional 2-state cellular automaton. ca-patternsThe state of a cell. ' represents a live cell and ( represents a dead cell. ca-patterns0Get the state of one of the cells in a pattern.  lookup 0 0 returns the cell in the upper-left corner. If the row or column number is out of range, this function will return (. ca-patterns#Generate a pattern from a function. ca-patterns&Get the height and width of a pattern. ca-patternsTest if a pattern is valid, i.e. rectangular. Some of the functions in this module only behave properly on rectangular patterns. ca-patternsConvert a vector of rows into a pattern, assuming the rows are all the same length.  ca-patternsConvert a vector of rows into a pattern. If the rows are not all the same length, they will padded with dead cells until the pattern is rectangular.  ca-patterns(Convert a pattern into a vector of rows.  ca-patternsConvert a list of rows into a pattern, assuming the rows are all the same length.  ca-patternsConvert a list of rows into a pattern. If the rows are not all the same length, they will padded with dead cells until the pattern is rectangular.  ca-patterns&Convert a pattern into a list of rows. ca-patterns*Convert a pattern into text. For example, toText '.' 'Z'$ will replace each dead cell with a . and each live cell with a Z. ca-patterns Convert a pattern into a string. ca-patterns4Remove rows of dead cells from the top of a pattern. ca-patterns7Remove rows of dead cells from the bottom of a pattern. ca-patterns=Remove columns of dead cells from the left side of a pattern. ca-patterns>Remove columns of dead cells from the right side of a pattern. ca-patternsA composition of , , , and . Removes as many dead cells from the pattern as possible while keeping it rectangular. ca-patternsForce a pattern to have the given height by removing rows from the bottom or by adding rows of dead cells. ca-patternsForce a pattern to have the given width by removing columns from the right or by adding columns of dead cells. ca-patterns&Set the height and width of a pattern. ca-patterns5Reflect vertically, switching the top and the bottom. ca-patterns7Reflect horizontally, switching the left and the right. ca-patterns*Rotate counterclockwise by a quarter turn. ca-patterns#Rotate clockwise by a quarter turn. ca-patternsCombine two patterns given a vertical and horizontal offset, which describe the displacement of the second pattern relative to the first one. ca-patternsrow ca-patternscolumn ca-patternsheight ca-patternswidth ca-patternsfunction taking row and column ca-patterns dead cell ca-patterns live cell ca-patterns dead cell ca-patterns live cell ca-patternsvertical offset ca-patternshorizontal offset  None ca-patternsA list of every possible h by w pattern. This function is necessarily exponential in both arguments, so it's only practical if the dimensions are very small.  ca-patternsCombine two patterns in multiple ways. Useful for creating a list of spaceship / still life collisions.See . ca-patternsh ca-patternsw  ca-patternsmin and max vertical offset ca-patternsmin and max horizonal offset  None +?'! ca-patterns4A string representing a cellular automaton, such as  "B36/S23" or  "B3/S2-i34q"." ca-patternsParse an RLE file, returning a ! (if it exists) and a . The argument can be ), *, or any other type with a + instance.Whitespace is allowed everywhere except in the middle of a number or rulestring, and there need not be a newline after the header. Also, text after the final ! character is ignored.# ca-patterns2Parse zero or more RLE files. The argument can be ), *, or any other type with a + instance.$ ca-patterns Convert a ' into an RLE. If the first argument is ,<, the generated RLE will have no "rule" field in its header.% ca-patterns=Convert a list of patterns into RLEs and print them. Example: import qualified Text.RLE as RLE import Data.CA.List (withDimensions) main = RLE.printAll (Just "B3/S23") (withDimensions 4 4)The program above will print the RLE of every possible pattern contained in a 4 by 4 square. This data can then be piped into another program such as apgsearch.!"#$%!"#$%-      !"#$%&'()*+,-+,./01234567/89:)ca-patterns-0.2.0.0-H6YgHz6iSGJWmuFWIMKIyData.CA.Pattern Data.CA.ListText.RLEPatternCelllookupgenerateheightwidth dimensionsvalidfromRectVector fromVectortoVector fromRectListfromListtoListtoTexttoStringtrimTop trimBottomtrimLeft trimRighttrim setHeightsetWidth setDimensionsreflectYreflectXrotateLrotateRcombine $fShowPattern $fEqPatternwithDimensions combinationsRuleparse parseManymakeprintAll $fEqRunTypeghc-prim GHC.TypesTrueFalsebaseGHC.BaseString text-1.2.3.2Data.Text.InternalTextparsec-3.1.14.0Text.Parsec.PrimStream GHC.MaybeNothing