-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Functions to work with unicode blocks more convenient. -- -- A package that makes rendering of frames, blocks, subscript and -- superscript more convenient. @package unicode-tricks @version 0.5.0.0 -- | Unicode has 2-by-2 blocks, this module aims to make it more convenient -- to render such blocks. module Data.Char.Block -- | A data type that determines the state of the row in a block. it -- determines the left and the right part of the row of the block. data Row a Row :: a -> a -> Row a -- | The left part of a row of the block. [left] :: Row a -> a -- | The right part of the row of the block. [right] :: Row a -> a -- | A data type that determines the state of the four subparts of the -- block. data Block a Block :: Row a -> Row a -> Block a -- | The upper part of the block. [upper] :: Block a -> Row a -- | The lower part of the block. [lower] :: Block a -> Row a -- | Convert the given Block value to a block character in unicode. -- True means that part is filled, and False means the part -- is not filled. filled :: Block Bool -> Char instance Data.Traversable.Traversable Data.Char.Block.Block instance GHC.Show.Show a => GHC.Show.Show (Data.Char.Block.Block a) instance GHC.Read.Read a => GHC.Read.Read (Data.Char.Block.Block a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Char.Block.Block a) instance GHC.Base.Functor Data.Char.Block.Block instance Data.Foldable.Foldable Data.Char.Block.Block instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Char.Block.Block a) instance Data.Traversable.Traversable Data.Char.Block.Row instance GHC.Show.Show a => GHC.Show.Show (Data.Char.Block.Row a) instance GHC.Read.Read a => GHC.Read.Read (Data.Char.Block.Row a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Char.Block.Row a) instance GHC.Base.Functor Data.Char.Block.Row instance Data.Foldable.Foldable Data.Char.Block.Row instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Char.Block.Row a) instance GHC.Base.Applicative Data.Char.Block.Block instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Char.Block.Block a) instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Char.Block.Block instance GHC.Base.Applicative Data.Char.Block.Row instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Char.Block.Row a) instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Char.Block.Row -- | Unicode has a Braille segment for Braille with six dot cells, and a -- segment for Braille with eight dot cells, this module aims to make it -- more convenient to render such characters. module Data.Char.Braille -- | A datastructure to render Braille patterns with six dots cells. data Braille6 a Braille6 :: Row a -> Row a -> Row a -> Braille6 a -- | The state of the top row of the Braille character. [top] :: Braille6 a -> Row a -- | The state of the middle row of the Braille character. [middle] :: Braille6 a -> Row a -- | The state of the bottom row of the Braille character. [bottom] :: Braille6 a -> Row a -- | A datastructure to render Braille patterns with eight dots cells. data Braille a Braille :: Row a -> Row a -> Row a -> Row a -> Braille a -- | The state of the top row of the Braille character. [row1] :: Braille a -> Row a -- | The state of the second row of the Braille character. [row2] :: Braille a -> Row a -- | The state of the third row of the Braille character. [row3] :: Braille a -> Row a -- | The state of the bottom row of the Braille character. [row4] :: Braille a -> Row a -- | Convert a Braille6 value to a Braille character, by -- putting in a given value at the two values at the bottom row. toBraille' :: a -> Braille6 a -> Braille a -- | Convert a Braille6 value to a Braille6 character by -- setting the bottom row with two False values. toBraille :: Braille6 Bool -> Braille Bool -- | Convert the given Braille6 value to a unicode character -- representing this Braille value. braille6 :: Braille6 Bool -> Char -- | Convert the given Braille value to a unicode character -- representing this braille value. braille :: Braille Bool -> Char instance Data.Traversable.Traversable Data.Char.Braille.Braille instance GHC.Show.Show a => GHC.Show.Show (Data.Char.Braille.Braille a) instance GHC.Read.Read a => GHC.Read.Read (Data.Char.Braille.Braille a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Char.Braille.Braille a) instance GHC.Base.Functor Data.Char.Braille.Braille instance Data.Foldable.Foldable Data.Char.Braille.Braille instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Char.Braille.Braille a) instance Data.Traversable.Traversable Data.Char.Braille.Braille6 instance GHC.Show.Show a => GHC.Show.Show (Data.Char.Braille.Braille6 a) instance GHC.Read.Read a => GHC.Read.Read (Data.Char.Braille.Braille6 a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Char.Braille.Braille6 a) instance GHC.Base.Functor Data.Char.Braille.Braille6 instance Data.Foldable.Foldable Data.Char.Braille.Braille6 instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Char.Braille.Braille6 a) instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Char.Braille.Braille a) instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Char.Braille.Braille instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Char.Braille.Braille6 a) instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Char.Braille.Braille6 -- | The 1F0A0 code block can be used to work with cards. This -- module makes working with the three sets of cards more convenient. The -- first set are cards with a suit (four suits) and a rank (14 ranks), -- which allows us to generate 56 cards. Next there are three jokes with -- the colors red, black and white. Finally there -- are 21 trump cards and the fool card (a tarot card which normally has -- no number). -- -- The module contains pattern synonyms that define common aliasses for -- these cards. module Data.Char.Card -- | A data type for the card suits data CardSuit -- | The spades card suit. Spades :: CardSuit -- | The hearts card suit. Hearts :: CardSuit -- | The diamonds card suit. Diamonds :: CardSuit -- | The clubs card suit. Clubs :: CardSuit -- | A data type for the rank of the card. data CardRank -- | The ace card rank. Ace :: CardRank -- | Card rank 2. R2 :: CardRank -- | Card rank 3. R3 :: CardRank -- | Card rank 4. R4 :: CardRank -- | Card rank 5. R5 :: CardRank -- | Card rank 6. R6 :: CardRank -- | Card rank 7. R7 :: CardRank -- | Card rank 8. R8 :: CardRank -- | Card rank 9. R9 :: CardRank -- | Card rank 10. R10 :: CardRank -- | The jack card rank. Jack :: CardRank -- | The knight card rank. Knight :: CardRank -- | The queen card rank. Queen :: CardRank -- | The king card rank. King :: CardRank -- | A data type to represent the three colors for which there are jokers: -- red, black and white. data JokerColor -- | The red joker. Red :: JokerColor -- | The black joker. Black :: JokerColor -- | The white joker. White :: JokerColor -- | A data type for the trump cards, often used for tarot. data Trump -- | The fool trump card, this tarot card is normally not numbered. Fool :: Trump -- | Tarot card I. Trump1 :: Trump -- | Tarot card II. Trump2 :: Trump -- | Tarot card III. Trump3 :: Trump -- | Tarot card IV. Trump4 :: Trump -- | Tarot card V. Trump5 :: Trump -- | Tarot card VI. Trump6 :: Trump -- | Tarot card VII. Trump7 :: Trump -- | Tarot card VIII. Trump8 :: Trump -- | Tarot card IX. Trump9 :: Trump -- | Tarot card X. Trump10 :: Trump -- | Tarot card XI. Trump11 :: Trump -- | Tarot card XII. Trump12 :: Trump -- | Tarot card XIII. Trump13 :: Trump -- | Tarot card XIV. Trump14 :: Trump -- | Tarot card XV. Trump15 :: Trump -- | Tarot card XVI. Trump16 :: Trump -- | Tarot card XVII. Trump17 :: Trump -- | Tarot card XVIII. Trump18 :: Trump -- | Tarot card XIX. Trump19 :: Trump -- | Tarot card XX. Trump20 :: Trump -- | Tarot card XXI. Trump21 :: Trump -- | A data type that represents the possible types of cards for which -- there is a Unicode characters. This is the back of a card, a card with -- a suit and rank, three jokers, and the 21 trump cards -- and the fool. data Card -- | The back of the card. Back :: Card -- | A card that is a combination of a CardSuit and a -- CardRank. There are 56 possibilities. Card :: CardSuit -> CardRank -> Card -- | Three possible JokerColor cards. Joker :: JokerColor -> Card Trump :: Trump -> Card -- | The unicode character that represents the back of the card. back :: Char -- | Convert the given Card object to its unicode equivalent. card :: Card -> Char -- | Convert the given CardSuit and CardRank to the -- equivalent unicode character for this card. card' :: CardSuit -> CardRank -> Char -- | Convert the given JokerColor to the unicode character which -- represents this joker color. joker :: JokerColor -> Char -- | Convert the given 't:Trump' value to the unicode equivalent. trump :: Trump -> Char -- | Swords is an alias for the spades card suit. pattern Swords :: CardSuit -- | Cups is an alias for the hearts card suit. pattern Cups :: CardSuit -- | Pentacles is an alias for the diamonds card suit. pattern Pentacles :: CardSuit -- | Wands is an alias for the clubs card suit. pattern Wands :: CardSuit -- | In France, the jack is sometimes called the valet. pattern Valet :: CardRank -- | In Germany, Austria and Switzerland, the jack is sometimes -- called the bube. pattern Bube :: CardRank -- | In Germany and Switzerland, the jack is sometimes called the -- unter. pattern Unter :: CardRank -- | An alternative name for the jack is page. pattern Page :: CardRank -- | In Italy, the jack is sometimes called the fante. pattern Fante :: CardRank -- | In France, the knight is sometimes called the chevalier. pattern Chevalier :: CardRank -- | In Germany, the knight is sometimes called the ober. pattern Ober :: CardRank -- | In Germany, the knight is sometimes called the ritter. pattern Ritter :: CardRank -- | An alternative name for the jack is cavall. pattern Cavall :: CardRank -- | An alternative name for the jack is cavaliere. pattern Cavaliere :: CardRank -- | An alternative name for the queen is dame. pattern Dame :: CardRank -- | In Germany, the queen is sometimes called the königin. pattern Königin :: CardRank -- | In Italy, the queen is sometimes called the regina. pattern Regina :: CardRank -- | In France, the king is sometimes called the roi. pattern Roi :: CardRank -- | In Germany, the king is sometimes called the könig. pattern König :: CardRank -- | In Italy, the queen is sometimes called the re. pattern Re :: CardRank -- | The trump card with number II is named childhood. pattern Childhood :: Trump -- | The trump card with number III is named youth. pattern Youth :: Trump -- | The trump card with number IV is named maturity. pattern Maturity :: Trump -- | The trump card with number V is named old age. pattern OldAge :: Trump -- | The trump card with number VI is named morning. pattern Morning :: Trump -- | The trump card with number VII is named afternoon. pattern Afternoon :: Trump -- | The trump card with number VIII is named evening. pattern Evening :: Trump -- | The trump card with number IX is named night. pattern Night :: Trump -- | The trump card with number X is named earth. pattern Earth :: Trump -- | The trump card with number X is named air. pattern Air :: Trump -- | The trump card with number XI is named water. pattern Water :: Trump -- | The trump card with number XI is named fire. pattern Fire :: Trump -- | The trump card with number XII is named dance. pattern Dance :: Trump -- | The trump card with number XIII is named shopping. pattern Shopping :: Trump -- | The trump card with number XIV is named open air. pattern OpenAir :: Trump -- | The trump card with number XV is named visual arts. pattern VisualArts :: Trump -- | The trump card with number XVI is named spring. pattern Spring :: Trump -- | The trump card with number XVII is named summer. pattern Summer :: Trump -- | The trump card with number XVIII is named autumn. pattern Autumn :: Trump -- | The trump card with number XIX is named winter. pattern Winter :: Trump -- | The trump card with number XX is named the game. pattern Game :: Trump -- | The trump card with number XXI is named collective. pattern Collective :: Trump -- | The trump card with number I is named individual. pattern Individual :: Trump instance GHC.Show.Show Data.Char.Card.Card instance GHC.Read.Read Data.Char.Card.Card instance GHC.Classes.Ord Data.Char.Card.Card instance GHC.Classes.Eq Data.Char.Card.Card instance GHC.Show.Show Data.Char.Card.Trump instance GHC.Read.Read Data.Char.Card.Trump instance GHC.Classes.Ord Data.Char.Card.Trump instance GHC.Classes.Eq Data.Char.Card.Trump instance GHC.Enum.Enum Data.Char.Card.Trump instance GHC.Enum.Bounded Data.Char.Card.Trump instance GHC.Show.Show Data.Char.Card.JokerColor instance GHC.Read.Read Data.Char.Card.JokerColor instance GHC.Classes.Ord Data.Char.Card.JokerColor instance GHC.Classes.Eq Data.Char.Card.JokerColor instance GHC.Enum.Enum Data.Char.Card.JokerColor instance GHC.Enum.Bounded Data.Char.Card.JokerColor instance GHC.Show.Show Data.Char.Card.CardRank instance GHC.Read.Read Data.Char.Card.CardRank instance GHC.Classes.Ord Data.Char.Card.CardRank instance GHC.Classes.Eq Data.Char.Card.CardRank instance GHC.Enum.Enum Data.Char.Card.CardRank instance GHC.Enum.Bounded Data.Char.Card.CardRank instance GHC.Show.Show Data.Char.Card.CardSuit instance GHC.Read.Read Data.Char.Card.CardSuit instance GHC.Classes.Ord Data.Char.Card.CardSuit instance GHC.Classes.Eq Data.Char.Card.CardSuit instance GHC.Enum.Enum Data.Char.Card.CardSuit instance GHC.Enum.Bounded Data.Char.Card.CardSuit instance Test.QuickCheck.Arbitrary.Arbitrary Data.Char.Card.Card instance Test.QuickCheck.Arbitrary.Arbitrary Data.Char.Card.Trump instance Test.QuickCheck.Arbitrary.Arbitrary Data.Char.Card.JokerColor instance Test.QuickCheck.Arbitrary.Arbitrary Data.Char.Card.CardRank instance Test.QuickCheck.Arbitrary.Arbitrary Data.Char.Card.CardSuit -- | This module defines data structures that are used in other modules, -- for example to rotate the characters. module Data.Char.Core -- | The possible orientations of a unicode character, these can be -- horizontal, or vertical. data Orientation -- | Horizontal orientation. Horizontal :: Orientation -- | Vertical orientation. Vertical :: Orientation -- | Possible rotations of a unicode character if that character can be -- rotated over 0, 90, 180, and 270 degrees. data Rotate90 -- | No rotation. R0 :: Rotate90 -- | Rotation over 90 degrees. R90 :: Rotate90 -- | Rotation over 180 degrees. R180 :: Rotate90 -- | Rotation over 270 degrees. R270 :: Rotate90 -- | A data type that specifies that an item has been given an orientation. data Oriented a Oriented :: a -> Orientation -> Oriented a -- | The object that is oriented. [oobject] :: Oriented a -> a -- | The oriented of the oriented object. [orientation] :: Oriented a -> Orientation -- | Specify if one should ligate, or not. When litigation is done -- characters that are normally written in two (or more) characters are -- combined in one character. For example instead of -- ⅠⅠⅠ. data Ligate -- | A ligate operation is performed on the characters. Ligate :: Ligate -- | No ligate operation is performed on the charaters. NoLigate :: Ligate -- | Specify if the given ligate function should be performed on the input, -- if 'v:Ligate' is passed, and the identity function otherwise. ligate :: (a -> a) -> Ligate -> a -> a -- | Specify if the given ligate function is performed over the functor -- object if 'v:Ligate' is passed, and the identity function -- otherwise. ligateF :: Functor f => (a -> a) -> Ligate -> f a -> f a instance GHC.Show.Show Data.Char.Core.Ligate instance GHC.Read.Read Data.Char.Core.Ligate instance GHC.Classes.Ord Data.Char.Core.Ligate instance GHC.Classes.Eq Data.Char.Core.Ligate instance GHC.Enum.Enum Data.Char.Core.Ligate instance GHC.Enum.Bounded Data.Char.Core.Ligate instance GHC.Show.Show Data.Char.Core.Rotate90 instance GHC.Read.Read Data.Char.Core.Rotate90 instance GHC.Classes.Ord Data.Char.Core.Rotate90 instance GHC.Classes.Eq Data.Char.Core.Rotate90 instance GHC.Enum.Enum Data.Char.Core.Rotate90 instance GHC.Enum.Bounded Data.Char.Core.Rotate90 instance Data.Traversable.Traversable Data.Char.Core.Oriented instance GHC.Show.Show a => GHC.Show.Show (Data.Char.Core.Oriented a) instance GHC.Read.Read a => GHC.Read.Read (Data.Char.Core.Oriented a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Char.Core.Oriented a) instance GHC.Base.Functor Data.Char.Core.Oriented instance Data.Foldable.Foldable Data.Char.Core.Oriented instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Char.Core.Oriented a) instance GHC.Show.Show Data.Char.Core.Orientation instance GHC.Read.Read Data.Char.Core.Orientation instance GHC.Classes.Ord Data.Char.Core.Orientation instance GHC.Classes.Eq Data.Char.Core.Orientation instance GHC.Enum.Enum Data.Char.Core.Orientation instance GHC.Enum.Bounded Data.Char.Core.Orientation instance Test.QuickCheck.Arbitrary.Arbitrary Data.Char.Core.Ligate instance Data.Default.Class.Default Data.Char.Core.Ligate instance Test.QuickCheck.Arbitrary.Arbitrary Data.Char.Core.Rotate90 instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Char.Core.Oriented a) instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Char.Core.Oriented instance Test.QuickCheck.Arbitrary.Arbitrary Data.Char.Core.Orientation -- | One can make use of a block 2600 and block 1fa00 of -- Unicode characters to render chess characters. One can render chess -- characters as netral, white, or black pieces, for -- such pieces one can render these rotated by 0, 90, 180 and 270 -- degrees. Knights can be rendered on 45, 135, 225 and 315 degrees as -- well. Furthermore unicode allows to render an equihopper, and -- special variants like a knight-queen, knight-rook, and -- knight-bishop. -- -- The module contains pattern synonyms for names that are often given to -- the pieces. module Data.Char.Chess -- | The color of a chess piece, this can for most pieces be Black, -- White, or Neutral. data ChessColor -- | White color. White :: ChessColor -- | Black color. Black :: ChessColor -- | Neutral chess pieces, sometimes depicted half white and half -- black. Neutral :: ChessColor -- | A data type that defined binary colors (BWhite, and -- BBlack), this is used for special chess pieces like a knight -- queen, knight rook, and knight bishop that only have -- no neutral color in unicode. data ChessColorBinary -- | White color. BWhite :: ChessColorBinary -- | Black color. BBlack :: ChessColorBinary -- | The type of chess pieces. Unicode includes an Equihopper as -- piece as well. data ChessPieceType -- | The king chess piece. King :: ChessPieceType -- | The queen chess piece. Queen :: ChessPieceType -- | The rook chess piece. Rook :: ChessPieceType -- | The bishop chess piece. Bishop :: ChessPieceType -- | The knight chess piece. Knight :: ChessPieceType -- | The pawn chess piece. Pawn :: ChessPieceType -- | The equihopper chess piece. Equihopper :: ChessPieceType -- | Hybrid chess pieces like the knight-queen, knight-rook -- and knight-bishop. data ChessHybridType -- | The knight-queen chess piece. KnightQueen :: ChessHybridType -- | The knight-rook chess piece. KnightRook :: ChessHybridType -- | The knight-bishop chess piece. KnightBishop :: ChessHybridType -- | Chess pieces that can be represented in Unicode. These are the -- king, queen, rook, bishop, knight, -- pawn, and equihopper over 0, 90, 180, and 270 degrees; -- and the knight over 45, 135, 225, and -- 315 degrees in Black, White and Neutral. -- Furthermore one can draw a knight-queen, knight-rook, -- and knight-bishop pieces can be drawn without rotation and only -- in BBlack or BWhite. data ChessPiece -- | Standard pieces drawn in black, white, or neutral -- and with rotation. Chess90 :: ChessColor -> ChessPieceType -> Rotate90 -> ChessPiece -- | Knights have unicode characters to render these rotated over -- 45, 135, 225 and 315 degrees. Chess45Knight :: ChessColor -> Rotate45 -> ChessPiece -- | Hybrid chess pieces can only be rendered in BBlack and -- BWhite. ChessHybrid :: ChessHybridType -> ChessColorBinary -> ChessPiece -- | Extra rotations that can be performed for knight chess pieces. data Rotate45 -- | Rotation over 45 degrees. R45 :: Rotate45 -- | Rotation over 135 degrees. R135 :: Rotate45 -- | Rotation over 225 degrees. R225 :: Rotate45 -- | Rotation over 315 degrees. R315 :: Rotate45 -- | Convert the given ChessPiece to the corresponding unicode -- character. chessPiece :: ChessPiece -> Char -- | A grasshopper is a queen rotated over 180 degrees. pattern Grasshopper :: ChessColor -> ChessPiece -- | A Nightrider is a knight rotated over 180 degrees. pattern Nightrider :: ChessColor -> ChessPiece -- | An amazon is alterative name for a knight-queen. pattern Amazon :: ChessColorBinary -> ChessPiece -- | A terror is alterative name for a knight-queen. pattern Terror :: ChessColorBinary -> ChessPiece -- | An omnipotent queen is alterative name for a -- knight-queen. pattern OmnipotentQueen :: ChessColorBinary -> ChessPiece -- | A superqueen is alterative name for a knight-queen. pattern Superqueen :: ChessColorBinary -> ChessPiece -- | A chancellor is alterative name for a knight-rook. pattern Chancellor :: ChessColorBinary -> ChessPiece -- | A marshall is alterative name for a knight-rook. pattern Marshall :: ChessColorBinary -> ChessPiece -- | An empress is alterative name for a knight-rook. pattern Empress :: ChessColorBinary -> ChessPiece -- | A cardinal is alterative name for a knight-bishop. pattern Cardinal :: ChessColorBinary -> ChessPiece -- | A princess is alterative name for a knight-bishop. pattern Princess :: ChessColorBinary -> ChessPiece instance GHC.Show.Show Data.Char.Chess.ChessPiece instance GHC.Read.Read Data.Char.Chess.ChessPiece instance GHC.Classes.Ord Data.Char.Chess.ChessPiece instance GHC.Classes.Eq Data.Char.Chess.ChessPiece instance GHC.Show.Show Data.Char.Chess.ChessHybridType instance GHC.Read.Read Data.Char.Chess.ChessHybridType instance GHC.Classes.Ord Data.Char.Chess.ChessHybridType instance GHC.Classes.Eq Data.Char.Chess.ChessHybridType instance GHC.Enum.Enum Data.Char.Chess.ChessHybridType instance GHC.Enum.Bounded Data.Char.Chess.ChessHybridType instance GHC.Show.Show Data.Char.Chess.Rotate45 instance GHC.Read.Read Data.Char.Chess.Rotate45 instance GHC.Classes.Ord Data.Char.Chess.Rotate45 instance GHC.Classes.Eq Data.Char.Chess.Rotate45 instance GHC.Enum.Enum Data.Char.Chess.Rotate45 instance GHC.Enum.Bounded Data.Char.Chess.Rotate45 instance GHC.Show.Show Data.Char.Chess.ChessPieceType instance GHC.Read.Read Data.Char.Chess.ChessPieceType instance GHC.Classes.Ord Data.Char.Chess.ChessPieceType instance GHC.Classes.Eq Data.Char.Chess.ChessPieceType instance GHC.Enum.Enum Data.Char.Chess.ChessPieceType instance GHC.Enum.Bounded Data.Char.Chess.ChessPieceType instance GHC.Show.Show Data.Char.Chess.ChessColor instance GHC.Read.Read Data.Char.Chess.ChessColor instance GHC.Classes.Ord Data.Char.Chess.ChessColor instance GHC.Classes.Eq Data.Char.Chess.ChessColor instance GHC.Enum.Enum Data.Char.Chess.ChessColor instance GHC.Enum.Bounded Data.Char.Chess.ChessColor instance GHC.Show.Show Data.Char.Chess.ChessColorBinary instance GHC.Read.Read Data.Char.Chess.ChessColorBinary instance GHC.Classes.Ord Data.Char.Chess.ChessColorBinary instance GHC.Classes.Eq Data.Char.Chess.ChessColorBinary instance GHC.Enum.Enum Data.Char.Chess.ChessColorBinary instance GHC.Enum.Bounded Data.Char.Chess.ChessColorBinary instance Test.QuickCheck.Arbitrary.Arbitrary Data.Char.Chess.ChessPiece instance Test.QuickCheck.Arbitrary.Arbitrary Data.Char.Chess.ChessHybridType instance Test.QuickCheck.Arbitrary.Arbitrary Data.Char.Chess.Rotate45 instance Test.QuickCheck.Arbitrary.Arbitrary Data.Char.Chess.ChessPieceType instance Test.QuickCheck.Arbitrary.Arbitrary Data.Char.Chess.ChessColor instance Test.QuickCheck.Arbitrary.Arbitrary Data.Char.Chess.ChessColorBinary -- | Unicode has a block named Miscellaneous Symbols that -- includes unicode characters for dice, this module aims to make it more -- convenient to render die characters. module Data.Char.Dice -- | A data type to store the values of a die. data DieValue -- | A die with value one, represented with ⚀. I :: DieValue -- | A die with value two, represented with ⚁. II :: DieValue -- | A die with value three, represented with ⚂. III :: DieValue -- | A die with value four, represented with ⚃. IV :: DieValue -- | A die with value five, represented with ⚄. V :: DieValue -- | A die with value six, represented with ⚅. VI :: DieValue -- | Convert the given integral value to a DieValue that represents -- the given number. If the number is less than one, or greater than six, -- Nothing is returned. toDieValue :: Integral i => i -> Maybe DieValue -- | Convert the given DieValue to a unicode character that -- represents a die with that value. die :: DieValue -> Char instance GHC.Show.Show Data.Char.Dice.DieValue instance GHC.Read.Read Data.Char.Dice.DieValue instance GHC.Classes.Ord Data.Char.Dice.DieValue instance GHC.Classes.Eq Data.Char.Dice.DieValue instance GHC.Enum.Enum Data.Char.Dice.DieValue instance GHC.Enum.Bounded Data.Char.Dice.DieValue instance Test.QuickCheck.Arbitrary.Arbitrary Data.Char.Dice.DieValue -- | A module that defines values for domino pieces, and converts these to -- unicode characters of the 1F030 unicode block. module Data.Char.Domino -- | A domino piece, which has two items. Depending on the orientation, the -- items are located at the top and bottom; or left -- and right. data Domino a -- | The front side of the domino piece. Domino :: a -> a -> Domino a -- | The part that is located at the left side in case the piece is -- located horizontally, or at the top in case the piece is -- located vertically. [leftTop] :: Domino a -> a -- | The part that is located at the right side in case the piece is -- located horizontally, or at the bottom in case the piece -- is located vertically. [rightBottom] :: Domino a -> a -- | The back side of the domino piece. Back :: Domino a -- | A pattern synonym that makes it more convenient to write expressions -- that look like domino's like for example II :| IV. pattern (:|) :: a -> a -> Domino a -- | A type alias that specifies that OrientedDomino is an -- Oriented type that wraps a Domino item. type OrientedDomino a = Oriented (Domino a) -- | A SimpleDomino is a Domino that contains DieValue -- objects, it thus can not have an "empty" value. type SimpleDomino = Domino DieValue -- | A ComplexDomino is a Domino that contains Maybe -- values wrapping a DieValue. In case of a Nothing, that -- side is considered empty. type ComplexDomino = Domino (Maybe DieValue) -- | Convert a ComplexDomino value to a unicode character rendering -- the domino value horizontally. dominoH :: ComplexDomino -> Char -- | Convert a SimpleDomino value to a unicode character rendering -- the domino value horizontally. dominoH' :: SimpleDomino -> Char -- | Convert a ComplexDomino value to a unicode character rendering -- the domino value vertically. dominoV :: ComplexDomino -> Char -- | Convert a SimpleDomino value to a unicode character rendering -- the domino value vertically. dominoV' :: SimpleDomino -> Char -- | Convert an OrientedDomino to its unicode equivalent, where the -- sides of the domino can be empty. domino :: OrientedDomino (Maybe DieValue) -> Char -- | Convert an OrientedDomino to its unicode equivalent, where the -- sides of the domino can not be empty. domino' :: OrientedDomino DieValue -> Char instance Data.Traversable.Traversable Data.Char.Domino.Domino instance GHC.Show.Show a => GHC.Show.Show (Data.Char.Domino.Domino a) instance GHC.Read.Read a => GHC.Read.Read (Data.Char.Domino.Domino a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Char.Domino.Domino a) instance GHC.Base.Functor Data.Char.Domino.Domino instance Data.Foldable.Foldable Data.Char.Domino.Domino instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Char.Domino.Domino a) instance GHC.Base.Applicative Data.Char.Domino.Domino instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Char.Domino.Domino a) instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Char.Domino.Domino -- | A frame is represented as a pair of horizontal and vertical lines. -- These can be any items, but currently only booleans and weight objects -- are covered to convert the item to a corresponding character. module Data.Char.Frame -- | The weights of the frame lines, these can be Empty, -- Light or Heavy. data Weight -- | The frame does not contain such line. Empty :: Weight -- | The frame contains such line. Light :: Weight -- | The frame contains such line, in boldface. Heavy :: Weight -- | A data type that determines the state of the horizontal lines -- of the frame (left and right). data Horizontal a Horizontal :: a -> a -> Horizontal a -- | The state of the left line of the frame. [left] :: Horizontal a -> a -- | The state of the right line of the frame. [right] :: Horizontal a -> a -- | A data type that determines the state of the vertical lines of -- the frame (up and down). data Vertical a Vertical :: a -> a -> Vertical a -- | The state of the line in the up direction of the frame. [up] :: Vertical a -> a -- | The state of the line in the down direction of the frame. [down] :: Vertical a -> a -- | A data type that specifies the four lines that should (not) be drawn -- for the frame. data Parts a Parts :: Vertical a -> Horizontal a -> Parts a -- | A type synonym that makes it more convenient to work with a -- Parts object that wraps Bools. Usually True means -- it should draw a line, and False that there is no line in that -- direction. type Simple = Parts Bool -- | A type synonym that makes it more convenient to work with a -- Parts object that wraps Weight objects. These specify -- the weight . type Weighted = Parts Weight -- | A pattern that makes pattern matching and expressions with -- Parts more convenient. pattern Frame :: a -> a -> a -> a -> Parts a -- | Convert a Simple frame to a corresponding Char. Here -- True is mapped to a Light line. simple :: Simple -> Char -- | Convert a Simple frame to a corresponding Char. Here -- True is mapped to a Heavy line. simple' :: Simple -> Char -- | Generate a Char where turns are done with an arc instead -- of a corner. This can only be done for Light lines. simpleWithArc :: Simple -> Char -- | Converts a given Weighted to the char that can be used to -- render frames. weighted :: Weighted -> Char -- | Convert a Simple frame to a Weighted frame by converting -- True to the given Weight value. simpleToWeighted :: Weight -> Simple -> Weighted -- | Convert a Simple frame to a Weighted frame by converting -- True to Light. simpleToLight :: Simple -> Weighted -- | Convert a Simple frame to a Weighted frame by converting -- True to Heavy. simpleToHeavy :: Simple -> Weighted instance GHC.Show.Show Data.Char.Frame.Weight instance GHC.Read.Read Data.Char.Frame.Weight instance GHC.Classes.Ord Data.Char.Frame.Weight instance GHC.Classes.Eq Data.Char.Frame.Weight instance GHC.Enum.Enum Data.Char.Frame.Weight instance GHC.Enum.Bounded Data.Char.Frame.Weight instance Data.Traversable.Traversable Data.Char.Frame.Parts instance GHC.Show.Show a => GHC.Show.Show (Data.Char.Frame.Parts a) instance GHC.Read.Read a => GHC.Read.Read (Data.Char.Frame.Parts a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Char.Frame.Parts a) instance GHC.Base.Functor Data.Char.Frame.Parts instance Data.Foldable.Foldable Data.Char.Frame.Parts instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Char.Frame.Parts a) instance Data.Traversable.Traversable Data.Char.Frame.Vertical instance GHC.Show.Show a => GHC.Show.Show (Data.Char.Frame.Vertical a) instance GHC.Read.Read a => GHC.Read.Read (Data.Char.Frame.Vertical a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Char.Frame.Vertical a) instance GHC.Base.Functor Data.Char.Frame.Vertical instance Data.Foldable.Foldable Data.Char.Frame.Vertical instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Char.Frame.Vertical a) instance Data.Traversable.Traversable Data.Char.Frame.Horizontal instance GHC.Show.Show a => GHC.Show.Show (Data.Char.Frame.Horizontal a) instance GHC.Read.Read a => GHC.Read.Read (Data.Char.Frame.Horizontal a) instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Char.Frame.Horizontal a) instance GHC.Base.Functor Data.Char.Frame.Horizontal instance Data.Foldable.Foldable Data.Char.Frame.Horizontal instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Char.Frame.Horizontal a) instance Test.QuickCheck.Arbitrary.Arbitrary Data.Char.Frame.Weight instance GHC.Base.Semigroup a => GHC.Base.Semigroup (Data.Char.Frame.Parts a) instance GHC.Base.Monoid a => GHC.Base.Monoid (Data.Char.Frame.Parts a) instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Char.Frame.Parts a) instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Char.Frame.Parts instance GHC.Base.Applicative Data.Char.Frame.Parts instance GHC.Base.Semigroup a => GHC.Base.Semigroup (Data.Char.Frame.Vertical a) instance GHC.Base.Monoid a => GHC.Base.Monoid (Data.Char.Frame.Vertical a) instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Char.Frame.Vertical a) instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Char.Frame.Vertical instance GHC.Base.Applicative Data.Char.Frame.Vertical instance GHC.Base.Semigroup a => GHC.Base.Semigroup (Data.Char.Frame.Horizontal a) instance GHC.Base.Monoid a => GHC.Base.Monoid (Data.Char.Frame.Horizontal a) instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (Data.Char.Frame.Horizontal a) instance Test.QuickCheck.Arbitrary.Arbitrary1 Data.Char.Frame.Horizontal instance GHC.Base.Applicative Data.Char.Frame.Horizontal -- | This module aims to convert Roman numerals to a String of unicode -- characters that represent Roman numerals. -- -- One can convert numbers to Roman numerals in uppercase and lowercase, -- and in Additive and Subtractive style. module Data.Char.Roman -- | Roman numerals for which a unicode character exists. data RomanLiteral -- | The unicode character for the Roman numeral one: Ⅰ. I :: RomanLiteral -- | The unicode character for the Roman numeral two: Ⅱ. II :: RomanLiteral -- | The unicode character for the Roman numeral three: Ⅲ. III :: RomanLiteral -- | The unicode character for the Roman numeral four: Ⅳ. IV :: RomanLiteral -- | The unicode character for the Roman numeral five: Ⅴ. V :: RomanLiteral -- | The unicode character for the Roman numeral six: Ⅵ. VI :: RomanLiteral -- | The unicode character for the Roman numeral seven: Ⅶ. VII :: RomanLiteral -- | The unicode character for the Roman numeral eight: Ⅷ. VIII :: RomanLiteral -- | The unicode character for the Roman numeral nine: Ⅸ. IX :: RomanLiteral -- | The unicode character for the Roman numeral ten: Ⅹ. X :: RomanLiteral -- | The unicode character for the Roman numeral eleven: Ⅺ. XI :: RomanLiteral -- | The unicode character for the Roman numeral twelve: Ⅻ. XII :: RomanLiteral -- | The unicode character for the Roman numeral fifty: Ⅼ. L :: RomanLiteral -- | The unicode character for the Roman numeral hundred: Ⅽ. C :: RomanLiteral -- | The unicode character for the Roman numeral five hundred: Ⅾ. D :: RomanLiteral -- | The unicode character for the Roman numeral thousand: Ⅿ. M :: RomanLiteral -- | The style to convert a number to a Roman numeral. data RomanStyle -- | The additive style converts four to ⅠⅠⅠⅠ. Additive :: RomanStyle -- | The subtractive style converts four to ⅠⅤ. Subtractive :: RomanStyle -- | Convert the given number with the given RomanStyle and -- Ligate style to a sequence of RomanLiterals, given the -- number can be represented with Roman numerals (is strictly larger than -- zero). toLiterals :: Integral i => RomanStyle -> Ligate -> i -> Maybe [RomanLiteral] -- | Convert the given RomanLiteral object to a unicode character in -- uppercase. romanLiteral :: RomanLiteral -> Char -- | Convert the given RomanLiteral object to a unicode character in -- lowercase. romanLiteral' :: RomanLiteral -> Char -- | Convert a sequence of RomanLiteral objects to a Text -- object that contains a sequence of corresponding Unicode characters -- which are Roman numberals in uppercase. romanNumeral :: [RomanLiteral] -> Text -- | Convert a sequence of RomanLiteral objects to a Text -- object that contains a sequence of corresponding Unicode characters -- which are Roman numberals in lowercase. romanNumeral' :: [RomanLiteral] -> Text -- | Convert a given number to a Text wrapped in a Just data -- constructor, given the number can be converted to a Roman numeral, -- given it can be represented. Nothing in case it can not be -- represented. The number is written in Roman numerals in -- uppercase. romanNumber :: Integral i => RomanStyle -> Ligate -> i -> Maybe Text -- | Convert a given number to a Text wrapped in a Just data -- constructor, given the number can be converted to a Roman numeral, -- given it can be represented. Nothing in case it can not be -- represented. The number is written in Roman numerals in -- lowercase. romanNumber' :: Integral i => RomanStyle -> Ligate -> i -> Maybe Text instance GHC.Read.Read Data.Char.Roman.RomanLiteral instance GHC.Show.Show Data.Char.Roman.RomanLiteral instance GHC.Classes.Eq Data.Char.Roman.RomanLiteral instance GHC.Enum.Enum Data.Char.Roman.RomanLiteral instance GHC.Enum.Bounded Data.Char.Roman.RomanLiteral instance GHC.Read.Read Data.Char.Roman.RomanStyle instance GHC.Show.Show Data.Char.Roman.RomanStyle instance GHC.Classes.Eq Data.Char.Roman.RomanStyle instance GHC.Enum.Enum Data.Char.Roman.RomanStyle instance GHC.Enum.Bounded Data.Char.Roman.RomanStyle instance Data.Default.Class.Default Data.Char.Roman.RomanStyle instance Test.QuickCheck.Arbitrary.Arbitrary Data.Char.Roman.RomanStyle -- | One can make use of a block of Unicode characters to -- emulate subscript and superscript. Note that the subscript and -- superscript will be aligned with the baseline and the cap -- line respectively, and is thus not equivalent to -- sub.../sub and -- sup.../sup in HTML. Furthermore only a small -- subset of characters is supported. -- -- This module allows one to map certain characters to their subscript -- and superscript counterpart, and furthermore makes it more convenient -- to transform a number (both positive and negative) to a Text -- that specifies this number in subscript and superscript. module Data.Char.Small -- | Convert a set of characters to their subscript counterpart, given that -- characters exists. toSub :: Char -> Maybe Char -- | Convert a set of characters to their superscript counterpart, given -- that characters exists. toSup :: Char -> Maybe Char -- | Convert a number (positive or negative) to a Text that -- specifies that number in subscript characters. asSub :: Integral i => i -> Text -- | Convert a number (positive or negative) to a Text that -- specifies that number in superscript characters. asSup :: Integral i => i -> Text -- | Format a given Ratio object to a Text value that formats -- the ratio with superscript and subscript. ratioToUnicode :: Integral i => Ratio i -> Text