packages feed

spacechar (empty) → 0.0.0.1

raw patch · 5 files changed

+1880/−0 lines, 5 filesdep +basedep +lensdep +parserssetup-changed

Dependencies added: base, lens, parsers

Files

+ LICENCE view
@@ -0,0 +1,30 @@+Copyright (c) 2022 Tony Morris++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++    * Redistributions of source code must retain the above copyright+      notice, this list of conditions and the following disclaimer.++    * Redistributions in binary form must reproduce the above+      copyright notice, this list of conditions and the following+      disclaimer in the documentation and/or other materials provided+      with the distribution.++    * Neither the name of Tony Morris nor the names of other+      contributors may be used to endorse or promote products derived+      from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ changelog.md view
@@ -0,0 +1,3 @@+0.0.0.1++* The initial version of spacechar.
+ spacechar.cabal view
@@ -0,0 +1,30 @@+name:                 spacechar+version:              0.0.0.1+synopsis:             Space Character+description:          Space Character+license:              BSD3+license-file:         LICENCE+author:               Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>+maintainer:           Tony Morris <ʇǝu˙sıɹɹoɯʇ@ןןǝʞsɐɥ>+copyright:            Copyright (C) 2022 Tony Morris+category:             Test+build-type:           Simple+extra-source-files:   changelog.md+cabal-version:        >=1.10+homepage:             https://gitlab.com/tonymorris/spacechar+bug-reports:          https://gitlab.com/tonymorris/spacechar/issues+tested-with:          GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.3, GHC == 8.6.5++source-repository     head+  type:               git+  location:           git@github.com:tonymorris/spacechar.git++library+  exposed-modules:      Data.Char.Space+  build-depends:        base >= 4.8 && < 6+                      , lens >= 4 && < 6+                      , parsers >= 0.12 && < 1++  hs-source-dirs:     src+  default-language:   Haskell2010+  ghc-options:        -Wall
+ src/Data/Char/Space.hs view
@@ -0,0 +1,1815 @@+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE LambdaCase #-}++module Data.Char.Space where++import Control.Category ( Category(id) )+import Control.Lens ( Prism', prism', (#), Lens' )+import Data.Char ( Char )+import Data.Eq ( Eq((==)) )+import Data.Int ( Int )+import Data.Foldable ( asum )+import Data.Functor ( Functor((<$), fmap) )+import Data.Maybe ( Maybe(Nothing, Just) )+import Data.Monoid ( (<>), Monoid(mempty) )+import Data.Ord ( Ord )+import Data.Semigroup ( Semigroup )+import GHC.Generics ( Generic )+import GHC.Show ( Show )+import Prelude(Integer)+import Text.Parser.Char ( CharParsing(satisfy) )+import Text.Parser.Combinators ( Parsing((<?>)) )++data HorizontalTab = HorizontalTab+  deriving (Eq, Ord, Show, Generic)++class HasHorizontalTab a where+  horizontalTab :: Lens' a HorizontalTab++instance HasHorizontalTab HorizontalTab where+  horizontalTab = id++instance HasHorizontalTab () where+  horizontalTab f x =+    fmap (\HorizontalTab -> x) (f HorizontalTab)++instance Semigroup HorizontalTab where+  HorizontalTab <> HorizontalTab = HorizontalTab++instance Monoid HorizontalTab where+  mempty = HorizontalTab++class AsHorizontalTab a where+  _HorizontalTab :: Prism' a HorizontalTab+  _HorizontalTab' :: a+  _HorizontalTab' = _HorizontalTab # HorizontalTab++instance AsHorizontalTab HorizontalTab where+  _HorizontalTab = id++instance AsHorizontalTab () where+  _HorizontalTab =+    prism'+      (\HorizontalTab -> ())+      (\() -> Just HorizontalTab)++instance AsHorizontalTab Char where+  _HorizontalTab =+    prism'+      (\HorizontalTab -> '\9')+      (\case+          '\9' -> Just HorizontalTab+          _ -> Nothing+      )++instance AsHorizontalTab Int where+  _HorizontalTab =+    prism'+      (\HorizontalTab -> 9)+      (\case+          9 -> Just HorizontalTab+          _ -> Nothing+      )++instance AsHorizontalTab Integer where+  _HorizontalTab =+    prism'+      (\HorizontalTab -> 9)+      (\case+          9 -> Just HorizontalTab+          _ -> Nothing+      )++parseHorizontalTab ::+  CharParsing p =>+  p HorizontalTab+parseHorizontalTab =+  HorizontalTab <$ satisfy (== '\9') <?> "horizontal tab character"++data LineFeed = LineFeed+  deriving (Eq, Ord, Show, Generic)++class HasLineFeed a where+  lineFeed :: Lens' a LineFeed++instance HasLineFeed LineFeed where+  lineFeed = id++instance HasLineFeed () where+  lineFeed f x =+    fmap (\LineFeed -> x) (f LineFeed)++instance Semigroup LineFeed where+  LineFeed <> LineFeed = LineFeed++instance Monoid LineFeed where+  mempty = LineFeed++class AsLineFeed a where+  _LineFeed :: Prism' a LineFeed+  _LineFeed' :: a+  _LineFeed' = _LineFeed # LineFeed++instance AsLineFeed LineFeed where+  _LineFeed = id++instance AsLineFeed () where+  _LineFeed =+    prism'+      (\LineFeed -> ())+      (\() -> Just LineFeed)++instance AsLineFeed Char where+  _LineFeed =+    prism'+      (\LineFeed -> '\10')+      (\case+          '\10' -> Just LineFeed+          _ -> Nothing+      )++instance AsLineFeed Int where+  _LineFeed =+    prism'+      (\LineFeed -> 10)+      (\case+          10 -> Just LineFeed+          _ -> Nothing+      )++instance AsLineFeed Integer where+  _LineFeed =+    prism'+      (\LineFeed -> 10)+      (\case+          10 -> Just LineFeed+          _ -> Nothing+      )++parseLineFeed ::+  CharParsing p =>+  p LineFeed+parseLineFeed =+  LineFeed <$ satisfy (== '\10') <?> "line feed character"++data VerticalTab = VerticalTab+  deriving (Eq, Ord, Show, Generic)++class HasVerticalTab a where+  verticalTab :: Lens' a VerticalTab++instance HasVerticalTab VerticalTab where+  verticalTab = id++instance HasVerticalTab () where+  verticalTab f x =+    fmap (\VerticalTab -> x) (f VerticalTab)++instance Semigroup VerticalTab where+  VerticalTab <> VerticalTab = VerticalTab++instance Monoid VerticalTab where+  mempty = VerticalTab++class AsVerticalTab a where+  _VerticalTab :: Prism' a VerticalTab+  _VerticalTab' :: a+  _VerticalTab' = _VerticalTab # VerticalTab++instance AsVerticalTab VerticalTab where+  _VerticalTab = id++instance AsVerticalTab () where+  _VerticalTab =+    prism'+      (\VerticalTab -> ())+      (\() -> Just VerticalTab)++instance AsVerticalTab Char where+  _VerticalTab =+    prism'+      (\VerticalTab -> '\11')+      (\case+          '\11' -> Just VerticalTab+          _ -> Nothing+      )++instance AsVerticalTab Int where+  _VerticalTab =+    prism'+      (\VerticalTab -> 11)+      (\case+          11 -> Just VerticalTab+          _ -> Nothing+      )++instance AsVerticalTab Integer where+  _VerticalTab =+    prism'+      (\VerticalTab -> 11)+      (\case+          11 -> Just VerticalTab+          _ -> Nothing+      )++parseVerticalTab ::+  CharParsing p =>+  p VerticalTab+parseVerticalTab =+  VerticalTab <$ satisfy (== '\11') <?> "vertical tab character"++data FormFeed = FormFeed+  deriving (Eq, Ord, Show, Generic)++class HasFormFeed a where+  formFeed :: Lens' a FormFeed++instance HasFormFeed FormFeed where+  formFeed = id++instance HasFormFeed () where+  formFeed f x =+    fmap (\FormFeed -> x) (f FormFeed)++instance Semigroup FormFeed where+  FormFeed <> FormFeed = FormFeed++instance Monoid FormFeed where+  mempty = FormFeed++class AsFormFeed a where+  _FormFeed :: Prism' a FormFeed+  _FormFeed' :: a+  _FormFeed' = _FormFeed # FormFeed++instance AsFormFeed FormFeed where+  _FormFeed = id++instance AsFormFeed () where+  _FormFeed =+    prism'+      (\FormFeed -> ())+      (\() -> Just FormFeed)++instance AsFormFeed Char where+  _FormFeed =+    prism'+      (\FormFeed -> '\12')+      (\case+          '\12' -> Just FormFeed+          _ -> Nothing+      )++instance AsFormFeed Int where+  _FormFeed =+    prism'+      (\FormFeed -> 12)+      (\case+          12 -> Just FormFeed+          _ -> Nothing+      )++instance AsFormFeed Integer where+  _FormFeed =+    prism'+      (\FormFeed -> 12)+      (\case+          12 -> Just FormFeed+          _ -> Nothing+      )++parseFormFeed ::+  CharParsing p =>+  p FormFeed+parseFormFeed =+  FormFeed <$ satisfy (== '\12') <?> "form feed character"++data CarriageReturn = CarriageReturn+  deriving (Eq, Ord, Show, Generic)++class HasCarriageReturn a where+  carriageReturn :: Lens' a CarriageReturn++instance HasCarriageReturn CarriageReturn where+  carriageReturn = id++instance HasCarriageReturn () where+  carriageReturn f x =+    fmap (\CarriageReturn -> x) (f CarriageReturn)++instance Semigroup CarriageReturn where+  CarriageReturn <> CarriageReturn = CarriageReturn++instance Monoid CarriageReturn where+  mempty = CarriageReturn++class AsCarriageReturn a where+  _CarriageReturn :: Prism' a CarriageReturn+  _CarriageReturn' :: a+  _CarriageReturn' = _CarriageReturn # CarriageReturn++instance AsCarriageReturn CarriageReturn where+  _CarriageReturn = id++instance AsCarriageReturn () where+  _CarriageReturn =+    prism'+      (\CarriageReturn -> ())+      (\() -> Just CarriageReturn)++instance AsCarriageReturn Char where+  _CarriageReturn =+    prism'+      (\CarriageReturn -> '\13')+      (\case+          '\13' -> Just CarriageReturn+          _ -> Nothing+      )++instance AsCarriageReturn Int where+  _CarriageReturn =+    prism'+      (\CarriageReturn -> 13)+      (\case+          13 -> Just CarriageReturn+          _ -> Nothing+      )++instance AsCarriageReturn Integer where+  _CarriageReturn =+    prism'+      (\CarriageReturn -> 13)+      (\case+          13 -> Just CarriageReturn+          _ -> Nothing+      )++parseCarriageReturn ::+  CharParsing p =>+  p CarriageReturn+parseCarriageReturn =+  CarriageReturn <$ satisfy (== '\13') <?> "carriage return character"++data Whitespace = Whitespace+  deriving (Eq, Ord, Show, Generic)++class HasWhitespace a where+  whitespace :: Lens' a Whitespace++instance HasWhitespace Whitespace where+  whitespace = id++instance HasWhitespace () where+  whitespace f x =+    fmap (\Whitespace -> x) (f Whitespace)++instance Semigroup Whitespace where+  Whitespace <> Whitespace = Whitespace++instance Monoid Whitespace where+  mempty = Whitespace++class AsWhitespace a where+  _Whitespace :: Prism' a Whitespace+  _Whitespace' :: a+  _Whitespace' = _Whitespace # Whitespace++instance AsWhitespace Whitespace where+  _Whitespace = id++instance AsWhitespace () where+  _Whitespace =+    prism'+      (\Whitespace -> ())+      (\() -> Just Whitespace)++instance AsWhitespace Char where+  _Whitespace =+    prism'+      (\Whitespace -> '\32')+      (\case+          '\32' -> Just Whitespace+          _ -> Nothing+      )++instance AsWhitespace Int where+  _Whitespace =+    prism'+      (\Whitespace -> 32)+      (\case+          32 -> Just Whitespace+          _ -> Nothing+      )++instance AsWhitespace Integer where+  _Whitespace =+    prism'+      (\Whitespace -> 32)+      (\case+          32 -> Just Whitespace+          _ -> Nothing+      )++parseWhitespace ::+  CharParsing p =>+  p Whitespace+parseWhitespace =+  Whitespace <$ satisfy (== '\32') <?> "whitespace character"++data NoBreakSpace = NoBreakSpace+  deriving (Eq, Ord, Show, Generic)++class HasNoBreakSpace a where+  noBreakSpace :: Lens' a NoBreakSpace++instance HasNoBreakSpace NoBreakSpace where+  noBreakSpace = id++instance HasNoBreakSpace () where+  noBreakSpace f x =+    fmap (\NoBreakSpace -> x) (f NoBreakSpace)++instance Semigroup NoBreakSpace where+  NoBreakSpace <> NoBreakSpace = NoBreakSpace++instance Monoid NoBreakSpace where+  mempty = NoBreakSpace++class AsNoBreakSpace a where+  _NoBreakSpace :: Prism' a NoBreakSpace+  _NoBreakSpace' :: a+  _NoBreakSpace' = _NoBreakSpace # NoBreakSpace++instance AsNoBreakSpace NoBreakSpace where+  _NoBreakSpace = id++instance AsNoBreakSpace () where+  _NoBreakSpace =+    prism'+      (\NoBreakSpace -> ())+      (\() -> Just NoBreakSpace)++instance AsNoBreakSpace Char where+  _NoBreakSpace =+    prism'+      (\NoBreakSpace -> '\160')+      (\case+          '\160' -> Just NoBreakSpace+          _ -> Nothing+      )++instance AsNoBreakSpace Int where+  _NoBreakSpace =+    prism'+      (\NoBreakSpace -> 160)+      (\case+          160 -> Just NoBreakSpace+          _ -> Nothing+      )++instance AsNoBreakSpace Integer where+  _NoBreakSpace =+    prism'+      (\NoBreakSpace -> 160)+      (\case+          160 -> Just NoBreakSpace+          _ -> Nothing+      )++parseNoBreakSpace ::+  CharParsing p =>+  p NoBreakSpace+parseNoBreakSpace =+  NoBreakSpace <$ satisfy (== '\160') <?> "no break space character"++data OghamSpaceMark = OghamSpaceMark+  deriving (Eq, Ord, Show, Generic)++class HasOghamSpaceMark a where+  oghamSpaceMark :: Lens' a OghamSpaceMark++instance HasOghamSpaceMark OghamSpaceMark where+  oghamSpaceMark = id++instance HasOghamSpaceMark () where+  oghamSpaceMark f x =+    fmap (\OghamSpaceMark -> x) (f OghamSpaceMark)++instance Semigroup OghamSpaceMark where+  OghamSpaceMark <> OghamSpaceMark = OghamSpaceMark++instance Monoid OghamSpaceMark where+  mempty = OghamSpaceMark++class AsOghamSpaceMark a where+  _OghamSpaceMark :: Prism' a OghamSpaceMark+  _OghamSpaceMark' :: a+  _OghamSpaceMark' = _OghamSpaceMark # OghamSpaceMark++instance AsOghamSpaceMark OghamSpaceMark where+  _OghamSpaceMark = id++instance AsOghamSpaceMark () where+  _OghamSpaceMark =+    prism'+      (\OghamSpaceMark -> ())+      (\() -> Just OghamSpaceMark)++instance AsOghamSpaceMark Char where+  _OghamSpaceMark =+    prism'+      (\OghamSpaceMark -> '\5760')+      (\case+          '\5760' -> Just OghamSpaceMark+          _ -> Nothing+      )++instance AsOghamSpaceMark Int where+  _OghamSpaceMark =+    prism'+      (\OghamSpaceMark -> 5760)+      (\case+          5760 -> Just OghamSpaceMark+          _ -> Nothing+      )++instance AsOghamSpaceMark Integer where+  _OghamSpaceMark =+    prism'+      (\OghamSpaceMark -> 5760)+      (\case+          5760 -> Just OghamSpaceMark+          _ -> Nothing+      )++parseOghamSpaceMark ::+  CharParsing p =>+  p OghamSpaceMark+parseOghamSpaceMark =+  OghamSpaceMark <$ satisfy (== '\5760') <?> "ogham space mark character"++data EnQuad = EnQuad+  deriving (Eq, Ord, Show, Generic)++class HasEnQuad a where+  enQuad :: Lens' a EnQuad++instance HasEnQuad EnQuad where+  enQuad = id++instance HasEnQuad () where+  enQuad f x =+    fmap (\EnQuad -> x) (f EnQuad)++instance Semigroup EnQuad where+  EnQuad <> EnQuad = EnQuad++instance Monoid EnQuad where+  mempty = EnQuad++class AsEnQuad a where+  _EnQuad :: Prism' a EnQuad+  _EnQuad' :: a+  _EnQuad' = _EnQuad # EnQuad++instance AsEnQuad EnQuad where+  _EnQuad = id++instance AsEnQuad () where+  _EnQuad =+    prism'+      (\EnQuad -> ())+      (\() -> Just EnQuad)++instance AsEnQuad Char where+  _EnQuad =+    prism'+      (\EnQuad -> '\8192')+      (\case+          '\8192' -> Just EnQuad+          _ -> Nothing+      )++instance AsEnQuad Int where+  _EnQuad =+    prism'+      (\EnQuad -> 8192)+      (\case+          8192 -> Just EnQuad+          _ -> Nothing+      )++instance AsEnQuad Integer where+  _EnQuad =+    prism'+      (\EnQuad -> 8192)+      (\case+          8192 -> Just EnQuad+          _ -> Nothing+      )++parseEnQuad ::+  CharParsing p =>+  p EnQuad+parseEnQuad =+  EnQuad <$ satisfy (== '\8192') <?> "en quad character"++data EmQuad = EmQuad+  deriving (Eq, Ord, Show, Generic)++class HasEmQuad a where+  emQuad :: Lens' a EmQuad++instance HasEmQuad EmQuad where+  emQuad = id++instance HasEmQuad () where+  emQuad f x =+    fmap (\EmQuad -> x) (f EmQuad)++instance Semigroup EmQuad where+  EmQuad <> EmQuad = EmQuad++instance Monoid EmQuad where+  mempty = EmQuad++class AsEmQuad a where+  _EmQuad :: Prism' a EmQuad+  _EmQuad' :: a+  _EmQuad' = _EmQuad # EmQuad++instance AsEmQuad EmQuad where+  _EmQuad = id++instance AsEmQuad () where+  _EmQuad =+    prism'+      (\EmQuad -> ())+      (\() -> Just EmQuad)++instance AsEmQuad Char where+  _EmQuad =+    prism'+      (\EmQuad -> '\8193')+      (\case+          '\8193' -> Just EmQuad+          _ -> Nothing+      )++instance AsEmQuad Int where+  _EmQuad =+    prism'+      (\EmQuad -> 8193)+      (\case+          8193 -> Just EmQuad+          _ -> Nothing+      )++instance AsEmQuad Integer where+  _EmQuad =+    prism'+      (\EmQuad -> 8193)+      (\case+          8193 -> Just EmQuad+          _ -> Nothing+      )++parseEmQuad ::+  CharParsing p =>+  p EmQuad+parseEmQuad =+  EmQuad <$ satisfy (== '\8193') <?> "em quad character"++data EnSpace = EnSpace+  deriving (Eq, Ord, Show, Generic)++class HasEnSpace a where+  enSpace :: Lens' a EnSpace++instance HasEnSpace EnSpace where+  enSpace = id++instance HasEnSpace () where+  enSpace f x =+    fmap (\EnSpace -> x) (f EnSpace)++instance Semigroup EnSpace where+  EnSpace <> EnSpace = EnSpace++instance Monoid EnSpace where+  mempty = EnSpace++class AsEnSpace a where+  _EnSpace :: Prism' a EnSpace+  _EnSpace' :: a+  _EnSpace' = _EnSpace # EnSpace++instance AsEnSpace EnSpace where+  _EnSpace = id++instance AsEnSpace () where+  _EnSpace =+    prism'+      (\EnSpace -> ())+      (\() -> Just EnSpace)++instance AsEnSpace Char where+  _EnSpace =+    prism'+      (\EnSpace -> '\8194')+      (\case+          '\8194' -> Just EnSpace+          _ -> Nothing+      )++instance AsEnSpace Int where+  _EnSpace =+    prism'+      (\EnSpace -> 8194)+      (\case+          8194 -> Just EnSpace+          _ -> Nothing+      )++instance AsEnSpace Integer where+  _EnSpace =+    prism'+      (\EnSpace -> 8194)+      (\case+          8194 -> Just EnSpace+          _ -> Nothing+      )++parseEnSpace ::+  CharParsing p =>+  p EnSpace+parseEnSpace =+  EnSpace <$ satisfy (== '\8194') <?> "en space character"++data EmSpace = EmSpace+  deriving (Eq, Ord, Show, Generic)++class HasEmSpace a where+  emSpace :: Lens' a EmSpace++instance HasEmSpace EmSpace where+  emSpace = id++instance HasEmSpace () where+  emSpace f x =+    fmap (\EmSpace -> x) (f EmSpace)++instance Semigroup EmSpace where+  EmSpace <> EmSpace = EmSpace++instance Monoid EmSpace where+  mempty = EmSpace++class AsEmSpace a where+  _EmSpace :: Prism' a EmSpace+  _EmSpace' :: a+  _EmSpace' = _EmSpace # EmSpace++instance AsEmSpace EmSpace where+  _EmSpace = id++instance AsEmSpace () where+  _EmSpace =+    prism'+      (\EmSpace -> ())+      (\() -> Just EmSpace)++instance AsEmSpace Char where+  _EmSpace =+    prism'+      (\EmSpace -> '\8195')+      (\case+          '\8195' -> Just EmSpace+          _ -> Nothing+      )++instance AsEmSpace Int where+  _EmSpace =+    prism'+      (\EmSpace -> 8195)+      (\case+          8195 -> Just EmSpace+          _ -> Nothing+      )++instance AsEmSpace Integer where+  _EmSpace =+    prism'+      (\EmSpace -> 8195)+      (\case+          8195 -> Just EmSpace+          _ -> Nothing+      )++parseEmSpace ::+  CharParsing p =>+  p EmSpace+parseEmSpace =+  EmSpace <$ satisfy (== '\8195') <?> "em space character"++data ThreePerEmSpace = ThreePerEmSpace+  deriving (Eq, Ord, Show, Generic)++class HasThreePerEmSpace a where+  threePerEmSpace :: Lens' a ThreePerEmSpace++instance HasThreePerEmSpace ThreePerEmSpace where+  threePerEmSpace = id++instance HasThreePerEmSpace () where+  threePerEmSpace f x =+    fmap (\ThreePerEmSpace -> x) (f ThreePerEmSpace)++instance Semigroup ThreePerEmSpace where+  ThreePerEmSpace <> ThreePerEmSpace = ThreePerEmSpace++instance Monoid ThreePerEmSpace where+  mempty = ThreePerEmSpace++class AsThreePerEmSpace a where+  _ThreePerEmSpace :: Prism' a ThreePerEmSpace+  _ThreePerEmSpace' :: a+  _ThreePerEmSpace' = _ThreePerEmSpace # ThreePerEmSpace++instance AsThreePerEmSpace ThreePerEmSpace where+  _ThreePerEmSpace = id++instance AsThreePerEmSpace () where+  _ThreePerEmSpace =+    prism'+      (\ThreePerEmSpace -> ())+      (\() -> Just ThreePerEmSpace)++instance AsThreePerEmSpace Char where+  _ThreePerEmSpace =+    prism'+      (\ThreePerEmSpace -> '\8196')+      (\case+          '\8196' -> Just ThreePerEmSpace+          _ -> Nothing+      )++instance AsThreePerEmSpace Int where+  _ThreePerEmSpace =+    prism'+      (\ThreePerEmSpace -> 8196)+      (\case+          8196 -> Just ThreePerEmSpace+          _ -> Nothing+      )++instance AsThreePerEmSpace Integer where+  _ThreePerEmSpace =+    prism'+      (\ThreePerEmSpace -> 8196)+      (\case+          8196 -> Just ThreePerEmSpace+          _ -> Nothing+      )++parseThreePerEmSpace ::+  CharParsing p =>+  p ThreePerEmSpace+parseThreePerEmSpace =+  ThreePerEmSpace <$ satisfy (== '\8196') <?> "three per em space character"++data FourPerEmSpace = FourPerEmSpace+  deriving (Eq, Ord, Show, Generic)++class HasFourPerEmSpace a where+  fourPerEmSpace :: Lens' a FourPerEmSpace++instance HasFourPerEmSpace FourPerEmSpace where+  fourPerEmSpace = id++instance HasFourPerEmSpace () where+  fourPerEmSpace f x =+    fmap (\FourPerEmSpace -> x) (f FourPerEmSpace)++instance Semigroup FourPerEmSpace where+  FourPerEmSpace <> FourPerEmSpace = FourPerEmSpace++instance Monoid FourPerEmSpace where+  mempty = FourPerEmSpace++class AsFourPerEmSpace a where+  _FourPerEmSpace :: Prism' a FourPerEmSpace+  _FourPerEmSpace' :: a+  _FourPerEmSpace' = _FourPerEmSpace # FourPerEmSpace++instance AsFourPerEmSpace FourPerEmSpace where+  _FourPerEmSpace = id++instance AsFourPerEmSpace () where+  _FourPerEmSpace =+    prism'+      (\FourPerEmSpace -> ())+      (\() -> Just FourPerEmSpace)++instance AsFourPerEmSpace Char where+  _FourPerEmSpace =+    prism'+      (\FourPerEmSpace -> '\8197')+      (\case+          '\8197' -> Just FourPerEmSpace+          _ -> Nothing+      )++instance AsFourPerEmSpace Int where+  _FourPerEmSpace =+    prism'+      (\FourPerEmSpace -> 8197)+      (\case+          8197 -> Just FourPerEmSpace+          _ -> Nothing+      )++instance AsFourPerEmSpace Integer where+  _FourPerEmSpace =+    prism'+      (\FourPerEmSpace -> 8197)+      (\case+          8197 -> Just FourPerEmSpace+          _ -> Nothing+      )++parseFourPerEmSpace ::+  CharParsing p =>+  p FourPerEmSpace+parseFourPerEmSpace =+  FourPerEmSpace <$ satisfy (== '\8197') <?> "four per em space character"++data SixPerEmSpace = SixPerEmSpace+  deriving (Eq, Ord, Show, Generic)++class HasSixPerEmSpace a where+  sixPerEmSpace :: Lens' a SixPerEmSpace++instance HasSixPerEmSpace SixPerEmSpace where+  sixPerEmSpace = id++instance HasSixPerEmSpace () where+  sixPerEmSpace f x =+    fmap (\SixPerEmSpace -> x) (f SixPerEmSpace)++instance Semigroup SixPerEmSpace where+  SixPerEmSpace <> SixPerEmSpace = SixPerEmSpace++instance Monoid SixPerEmSpace where+  mempty = SixPerEmSpace++class AsSixPerEmSpace a where+  _SixPerEmSpace :: Prism' a SixPerEmSpace+  _SixPerEmSpace' :: a+  _SixPerEmSpace' = _SixPerEmSpace # SixPerEmSpace++instance AsSixPerEmSpace SixPerEmSpace where+  _SixPerEmSpace = id++instance AsSixPerEmSpace () where+  _SixPerEmSpace =+    prism'+      (\SixPerEmSpace -> ())+      (\() -> Just SixPerEmSpace)++instance AsSixPerEmSpace Char where+  _SixPerEmSpace =+    prism'+      (\SixPerEmSpace -> '\8198')+      (\case+          '\8198' -> Just SixPerEmSpace+          _ -> Nothing+      )++instance AsSixPerEmSpace Int where+  _SixPerEmSpace =+    prism'+      (\SixPerEmSpace -> 8198)+      (\case+          8198 -> Just SixPerEmSpace+          _ -> Nothing+      )++instance AsSixPerEmSpace Integer where+  _SixPerEmSpace =+    prism'+      (\SixPerEmSpace -> 8198)+      (\case+          8198 -> Just SixPerEmSpace+          _ -> Nothing+      )++parseSixPerEmSpace ::+  CharParsing p =>+  p SixPerEmSpace+parseSixPerEmSpace =+  SixPerEmSpace <$ satisfy (== '\8198') <?> "six per em space character"++data FigureSpace = FigureSpace+  deriving (Eq, Ord, Show, Generic)++class HasFigureSpace a where+  figureSpace :: Lens' a FigureSpace++instance HasFigureSpace FigureSpace where+  figureSpace = id++instance HasFigureSpace () where+  figureSpace f x =+    fmap (\FigureSpace -> x) (f FigureSpace)++instance Semigroup FigureSpace where+  FigureSpace <> FigureSpace = FigureSpace++instance Monoid FigureSpace where+  mempty = FigureSpace++class AsFigureSpace a where+  _FigureSpace :: Prism' a FigureSpace+  _FigureSpace' :: a+  _FigureSpace' = _FigureSpace # FigureSpace++instance AsFigureSpace FigureSpace where+  _FigureSpace = id++instance AsFigureSpace () where+  _FigureSpace =+    prism'+      (\FigureSpace -> ())+      (\() -> Just FigureSpace)++instance AsFigureSpace Char where+  _FigureSpace =+    prism'+      (\FigureSpace -> '\8199')+      (\case+          '\8199' -> Just FigureSpace+          _ -> Nothing+      )++instance AsFigureSpace Int where+  _FigureSpace =+    prism'+      (\FigureSpace -> 8199)+      (\case+          8199 -> Just FigureSpace+          _ -> Nothing+      )++instance AsFigureSpace Integer where+  _FigureSpace =+    prism'+      (\FigureSpace -> 8199)+      (\case+          8199 -> Just FigureSpace+          _ -> Nothing+      )++parseFigureSpace ::+  CharParsing p =>+  p FigureSpace+parseFigureSpace =+  FigureSpace <$ satisfy (== '\8199') <?> "figure space character"++data PunctuationSpace = PunctuationSpace+  deriving (Eq, Ord, Show, Generic)++class HasPunctuationSpace a where+  punctuationSpace :: Lens' a PunctuationSpace++instance HasPunctuationSpace PunctuationSpace where+  punctuationSpace = id++instance HasPunctuationSpace () where+  punctuationSpace f x =+    fmap (\PunctuationSpace -> x) (f PunctuationSpace)++instance Semigroup PunctuationSpace where+  PunctuationSpace <> PunctuationSpace = PunctuationSpace++instance Monoid PunctuationSpace where+  mempty = PunctuationSpace++class AsPunctuationSpace a where+  _PunctuationSpace :: Prism' a PunctuationSpace+  _PunctuationSpace' :: a+  _PunctuationSpace' = _PunctuationSpace # PunctuationSpace++instance AsPunctuationSpace PunctuationSpace where+  _PunctuationSpace = id++instance AsPunctuationSpace () where+  _PunctuationSpace =+    prism'+      (\PunctuationSpace -> ())+      (\() -> Just PunctuationSpace)++instance AsPunctuationSpace Char where+  _PunctuationSpace =+    prism'+      (\PunctuationSpace -> '\8200')+      (\case+          '\8200' -> Just PunctuationSpace+          _ -> Nothing+      )++instance AsPunctuationSpace Int where+  _PunctuationSpace =+    prism'+      (\PunctuationSpace -> 8200)+      (\case+          8200 -> Just PunctuationSpace+          _ -> Nothing+      )++instance AsPunctuationSpace Integer where+  _PunctuationSpace =+    prism'+      (\PunctuationSpace -> 8200)+      (\case+          8200 -> Just PunctuationSpace+          _ -> Nothing+      )++parsePunctuationSpace ::+  CharParsing p =>+  p PunctuationSpace+parsePunctuationSpace =+  PunctuationSpace <$ satisfy (== '\8200') <?> "punctuation space character"++data ThinSpace = ThinSpace+  deriving (Eq, Ord, Show, Generic)++class HasThinSpace a where+  thinSpace :: Lens' a ThinSpace++instance HasThinSpace ThinSpace where+  thinSpace = id++instance HasThinSpace () where+  thinSpace f x =+    fmap (\ThinSpace -> x) (f ThinSpace)++instance Semigroup ThinSpace where+  ThinSpace <> ThinSpace = ThinSpace++instance Monoid ThinSpace where+  mempty = ThinSpace++class AsThinSpace a where+  _ThinSpace :: Prism' a ThinSpace+  _ThinSpace' :: a+  _ThinSpace' = _ThinSpace # ThinSpace++instance AsThinSpace ThinSpace where+  _ThinSpace = id++instance AsThinSpace () where+  _ThinSpace =+    prism'+      (\ThinSpace -> ())+      (\() -> Just ThinSpace)++instance AsThinSpace Char where+  _ThinSpace =+    prism'+      (\ThinSpace -> '\8201')+      (\case+          '\8201' -> Just ThinSpace+          _ -> Nothing+      )++instance AsThinSpace Int where+  _ThinSpace =+    prism'+      (\ThinSpace -> 8201)+      (\case+          8201 -> Just ThinSpace+          _ -> Nothing+      )++instance AsThinSpace Integer where+  _ThinSpace =+    prism'+      (\ThinSpace -> 8201)+      (\case+          8201 -> Just ThinSpace+          _ -> Nothing+      )++parseThinSpace ::+  CharParsing p =>+  p ThinSpace+parseThinSpace =+  ThinSpace <$ satisfy (== '\8201') <?> "thin space character"++data HairSpace = HairSpace+  deriving (Eq, Ord, Show, Generic)++class HasHairSpace a where+  hairSpace :: Lens' a HairSpace++instance HasHairSpace HairSpace where+  hairSpace = id++instance HasHairSpace () where+  hairSpace f x =+    fmap (\HairSpace -> x) (f HairSpace)++instance Semigroup HairSpace where+  HairSpace <> HairSpace = HairSpace++instance Monoid HairSpace where+  mempty = HairSpace++class AsHairSpace a where+  _HairSpace :: Prism' a HairSpace+  _HairSpace' :: a+  _HairSpace' = _HairSpace # HairSpace++instance AsHairSpace HairSpace where+  _HairSpace = id++instance AsHairSpace () where+  _HairSpace =+    prism'+      (\HairSpace -> ())+      (\() -> Just HairSpace)++instance AsHairSpace Char where+  _HairSpace =+    prism'+      (\HairSpace -> '\8202')+      (\case+          '\8202' -> Just HairSpace+          _ -> Nothing+      )++instance AsHairSpace Int where+  _HairSpace =+    prism'+      (\HairSpace -> 8202)+      (\case+          8202 -> Just HairSpace+          _ -> Nothing+      )++instance AsHairSpace Integer where+  _HairSpace =+    prism'+      (\HairSpace -> 8202)+      (\case+          8202 -> Just HairSpace+          _ -> Nothing+      )++parseHairSpace ::+  CharParsing p =>+  p HairSpace+parseHairSpace =+  HairSpace <$ satisfy (== '\8202') <?> "hair space character"++data NarrowNoBreakSpace = NarrowNoBreakSpace+  deriving (Eq, Ord, Show, Generic)++class HasNarrowNoBreakSpace a where+  narrowNoBreakSpace :: Lens' a NarrowNoBreakSpace++instance HasNarrowNoBreakSpace NarrowNoBreakSpace where+  narrowNoBreakSpace = id++instance HasNarrowNoBreakSpace () where+  narrowNoBreakSpace f x =+    fmap (\NarrowNoBreakSpace -> x) (f NarrowNoBreakSpace)++instance Semigroup NarrowNoBreakSpace where+  NarrowNoBreakSpace <> NarrowNoBreakSpace = NarrowNoBreakSpace++instance Monoid NarrowNoBreakSpace where+  mempty = NarrowNoBreakSpace++class AsNarrowNoBreakSpace a where+  _NarrowNoBreakSpace :: Prism' a NarrowNoBreakSpace+  _NarrowNoBreakSpace' :: a+  _NarrowNoBreakSpace' = _NarrowNoBreakSpace # NarrowNoBreakSpace++instance AsNarrowNoBreakSpace NarrowNoBreakSpace where+  _NarrowNoBreakSpace = id++instance AsNarrowNoBreakSpace () where+  _NarrowNoBreakSpace =+    prism'+      (\NarrowNoBreakSpace -> ())+      (\() -> Just NarrowNoBreakSpace)++instance AsNarrowNoBreakSpace Char where+  _NarrowNoBreakSpace =+    prism'+      (\NarrowNoBreakSpace -> '\8239')+      (\case+          '\8239' -> Just NarrowNoBreakSpace+          _ -> Nothing+      )++instance AsNarrowNoBreakSpace Int where+  _NarrowNoBreakSpace =+    prism'+      (\NarrowNoBreakSpace -> 8239)+      (\case+          8239 -> Just NarrowNoBreakSpace+          _ -> Nothing+      )++instance AsNarrowNoBreakSpace Integer where+  _NarrowNoBreakSpace =+    prism'+      (\NarrowNoBreakSpace -> 8239)+      (\case+          8239 -> Just NarrowNoBreakSpace+          _ -> Nothing+      )++parseNarrowNoBreakSpace ::+  CharParsing p =>+  p NarrowNoBreakSpace+parseNarrowNoBreakSpace =+  NarrowNoBreakSpace <$ satisfy (== '\8239') <?> "narrow no break space character"++data MediumMathematicalSpace = MediumMathematicalSpace+  deriving (Eq, Ord, Show, Generic)++class HasMediumMathematicalSpace a where+  mediumMathematicalSpace :: Lens' a MediumMathematicalSpace++instance HasMediumMathematicalSpace MediumMathematicalSpace where+  mediumMathematicalSpace = id++instance HasMediumMathematicalSpace () where+  mediumMathematicalSpace f x =+    fmap (\MediumMathematicalSpace -> x) (f MediumMathematicalSpace)++instance Semigroup MediumMathematicalSpace where+  MediumMathematicalSpace <> MediumMathematicalSpace = MediumMathematicalSpace++instance Monoid MediumMathematicalSpace where+  mempty = MediumMathematicalSpace++class AsMediumMathematicalSpace a where+  _MediumMathematicalSpace :: Prism' a MediumMathematicalSpace+  _MediumMathematicalSpace' :: a+  _MediumMathematicalSpace' = _MediumMathematicalSpace # MediumMathematicalSpace++instance AsMediumMathematicalSpace MediumMathematicalSpace where+  _MediumMathematicalSpace = id++instance AsMediumMathematicalSpace () where+  _MediumMathematicalSpace =+    prism'+      (\MediumMathematicalSpace -> ())+      (\() -> Just MediumMathematicalSpace)++instance AsMediumMathematicalSpace Char where+  _MediumMathematicalSpace =+    prism'+      (\MediumMathematicalSpace -> '\8287')+      (\case+          '\8287' -> Just MediumMathematicalSpace+          _ -> Nothing+      )++instance AsMediumMathematicalSpace Int where+  _MediumMathematicalSpace =+    prism'+      (\MediumMathematicalSpace -> 8287)+      (\case+          8287 -> Just MediumMathematicalSpace+          _ -> Nothing+      )++instance AsMediumMathematicalSpace Integer where+  _MediumMathematicalSpace =+    prism'+      (\MediumMathematicalSpace -> 8287)+      (\case+          8287 -> Just MediumMathematicalSpace+          _ -> Nothing+      )++parseMediumMathematicalSpace ::+  CharParsing p =>+  p MediumMathematicalSpace+parseMediumMathematicalSpace =+  MediumMathematicalSpace <$ satisfy (== '\8287') <?> "medium mathematical space character"++data IdeographicSpace = IdeographicSpace+  deriving (Eq, Ord, Show, Generic)++class HasIdeographicSpace a where+  ideographicSpace :: Lens' a IdeographicSpace++instance HasIdeographicSpace IdeographicSpace where+  ideographicSpace = id++instance HasIdeographicSpace () where+  ideographicSpace f x =+    fmap (\IdeographicSpace -> x) (f IdeographicSpace)++instance Semigroup IdeographicSpace where+  IdeographicSpace <> IdeographicSpace = IdeographicSpace++instance Monoid IdeographicSpace where+  mempty = IdeographicSpace++class AsIdeographicSpace a where+  _IdeographicSpace :: Prism' a IdeographicSpace+  _IdeographicSpace' :: a+  _IdeographicSpace' = _IdeographicSpace # IdeographicSpace++instance AsIdeographicSpace IdeographicSpace where+  _IdeographicSpace = id++instance AsIdeographicSpace () where+  _IdeographicSpace =+    prism'+      (\IdeographicSpace -> ())+      (\() -> Just IdeographicSpace)++instance AsIdeographicSpace Char where+  _IdeographicSpace =+    prism'+      (\IdeographicSpace -> '\12288')+      (\case+          '\12288' -> Just IdeographicSpace+          _ -> Nothing+      )++instance AsIdeographicSpace Int where+  _IdeographicSpace =+    prism'+      (\IdeographicSpace -> 12288)+      (\case+          12288 -> Just IdeographicSpace+          _ -> Nothing+      )++instance AsIdeographicSpace Integer where+  _IdeographicSpace =+    prism'+      (\IdeographicSpace -> 12288)+      (\case+          12288 -> Just IdeographicSpace+          _ -> Nothing+      )++parseIdeographicSpace ::+  CharParsing p =>+  p IdeographicSpace+parseIdeographicSpace =+  IdeographicSpace <$ satisfy (== '\12288') <?> "ideographic space character"++data SpaceChar =+  HorizontalTab_+  | LineFeed_+  | VerticalTab_+  | FormFeed_+  | CarriageReturn_+  | Whitespace_+  | NoBreakSpace_+  | OghamSpaceMark_+  | EnQuad_+  | EmQuad_+  | EnSpace_+  | EmSpace_+  | ThreePerEmSpace_+  | FourPerEmSpace_+  | SixPerEmSpace_+  | FigureSpace_+  | PunctuationSpace_+  | ThinSpace_+  | HairSpace_+  | NarrowNoBreakSpace_+  | MediumMathematicalSpace_+  | IdeographicSpace_+  deriving (Eq, Ord, Show, Generic)++class HasSpaceChar a where+  spaceChar :: Lens' a SpaceChar++instance HasSpaceChar SpaceChar where+  spaceChar = id++class AsSpaceChar a where+  _SpaceChar :: Prism' a SpaceChar++instance AsSpaceChar SpaceChar where+  _SpaceChar = id++parseSpaceChar ::+  CharParsing p =>+  p SpaceChar+parseSpaceChar =+  asum [+    HorizontalTab_ <$ parseHorizontalTab+  , LineFeed_ <$ parseLineFeed+  , VerticalTab_ <$ parseVerticalTab+  , FormFeed_ <$ parseFormFeed+  , CarriageReturn_ <$ parseCarriageReturn+  , Whitespace_ <$ parseWhitespace+  , NoBreakSpace_ <$ parseNoBreakSpace+  , OghamSpaceMark_ <$ parseOghamSpaceMark+  , EnQuad_ <$ parseEnQuad+  , EmQuad_ <$ parseEmQuad+  , EnSpace_ <$ parseEnSpace+  , EmSpace_ <$ parseEmSpace+  , ThreePerEmSpace_ <$ parseThreePerEmSpace+  , FourPerEmSpace_ <$ parseFourPerEmSpace+  , SixPerEmSpace_ <$ parseSixPerEmSpace+  , FigureSpace_ <$ parseFigureSpace+  , PunctuationSpace_ <$ parsePunctuationSpace+  , ThinSpace_ <$ parseThinSpace+  , HairSpace_ <$ parseHairSpace+  , NarrowNoBreakSpace_ <$ parseNarrowNoBreakSpace+  , MediumMathematicalSpace_ <$ parseMediumMathematicalSpace+  , IdeographicSpace_ <$ parseIdeographicSpace+  ]++instance AsHorizontalTab SpaceChar where+  _HorizontalTab =+    prism'+      (\HorizontalTab -> HorizontalTab_)+      (\case+          HorizontalTab_ -> Just HorizontalTab+          _ -> Nothing+      )++instance AsLineFeed SpaceChar where+  _LineFeed =+    prism'+      (\LineFeed -> LineFeed_)+      (\case+          LineFeed_ -> Just LineFeed+          _ -> Nothing+      )++instance AsVerticalTab SpaceChar where+  _VerticalTab =+    prism'+      (\VerticalTab -> VerticalTab_)+      (\case+          VerticalTab_ -> Just VerticalTab+          _ -> Nothing+      )++instance AsFormFeed SpaceChar where+  _FormFeed =+    prism'+      (\FormFeed -> FormFeed_)+      (\case+          FormFeed_ -> Just FormFeed+          _ -> Nothing+      )++instance AsCarriageReturn SpaceChar where+  _CarriageReturn =+    prism'+      (\CarriageReturn -> CarriageReturn_)+      (\case+          CarriageReturn_ -> Just CarriageReturn+          _ -> Nothing+      )++instance AsWhitespace SpaceChar where+  _Whitespace =+    prism'+      (\Whitespace -> Whitespace_)+      (\case+          Whitespace_ -> Just Whitespace+          _ -> Nothing+      )++instance AsNoBreakSpace SpaceChar where+  _NoBreakSpace =+    prism'+      (\NoBreakSpace -> NoBreakSpace_)+      (\case+          NoBreakSpace_ -> Just NoBreakSpace+          _ -> Nothing+      )++instance AsOghamSpaceMark SpaceChar where+  _OghamSpaceMark =+    prism'+      (\OghamSpaceMark -> OghamSpaceMark_)+      (\case+          OghamSpaceMark_ -> Just OghamSpaceMark+          _ -> Nothing+      )++instance AsEnQuad SpaceChar where+  _EnQuad =+    prism'+      (\EnQuad -> EnQuad_)+      (\case+          EnQuad_ -> Just EnQuad+          _ -> Nothing+      )++instance AsEmQuad SpaceChar where+  _EmQuad =+    prism'+      (\EmQuad -> EmQuad_)+      (\case+          EmQuad_ -> Just EmQuad+          _ -> Nothing+      )++instance AsEnSpace SpaceChar where+  _EnSpace =+    prism'+      (\EnSpace -> EnSpace_)+      (\case+          EnSpace_ -> Just EnSpace+          _ -> Nothing+      )++instance AsEmSpace SpaceChar where+  _EmSpace =+    prism'+      (\EmSpace -> EmSpace_)+      (\case+          EmSpace_ -> Just EmSpace+          _ -> Nothing+      )++instance AsThreePerEmSpace SpaceChar where+  _ThreePerEmSpace =+    prism'+      (\ThreePerEmSpace -> ThreePerEmSpace_)+      (\case+          ThreePerEmSpace_ -> Just ThreePerEmSpace+          _ -> Nothing+      )++instance AsFourPerEmSpace SpaceChar where+  _FourPerEmSpace =+    prism'+      (\FourPerEmSpace -> FourPerEmSpace_)+      (\case+          FourPerEmSpace_ -> Just FourPerEmSpace+          _ -> Nothing+      )++instance AsSixPerEmSpace SpaceChar where+  _SixPerEmSpace =+    prism'+      (\SixPerEmSpace -> SixPerEmSpace_)+      (\case+          SixPerEmSpace_ -> Just SixPerEmSpace+          _ -> Nothing+      )++instance AsFigureSpace SpaceChar where+  _FigureSpace =+    prism'+      (\FigureSpace -> FigureSpace_)+      (\case+          FigureSpace_ -> Just FigureSpace+          _ -> Nothing+      )++instance AsPunctuationSpace SpaceChar where+  _PunctuationSpace =+    prism'+      (\PunctuationSpace -> PunctuationSpace_)+      (\case+          PunctuationSpace_ -> Just PunctuationSpace+          _ -> Nothing+      )++instance AsThinSpace SpaceChar where+  _ThinSpace =+    prism'+      (\ThinSpace -> ThinSpace_)+      (\case+          ThinSpace_ -> Just ThinSpace+          _ -> Nothing+      )++instance AsHairSpace SpaceChar where+  _HairSpace =+    prism'+      (\HairSpace -> HairSpace_)+      (\case+          HairSpace_ -> Just HairSpace+          _ -> Nothing+      )++instance AsNarrowNoBreakSpace SpaceChar where+  _NarrowNoBreakSpace =+    prism'+      (\NarrowNoBreakSpace -> NarrowNoBreakSpace_)+      (\case+          NarrowNoBreakSpace_ -> Just NarrowNoBreakSpace+          _ -> Nothing+      )++instance AsMediumMathematicalSpace SpaceChar where+  _MediumMathematicalSpace =+    prism'+      (\MediumMathematicalSpace -> MediumMathematicalSpace_)+      (\case+          MediumMathematicalSpace_ -> Just MediumMathematicalSpace+          _ -> Nothing+      )++instance AsIdeographicSpace SpaceChar where+  _IdeographicSpace =+    prism'+      (\IdeographicSpace -> IdeographicSpace_)+      (\case+          IdeographicSpace_ -> Just IdeographicSpace+          _ -> Nothing+      )++data IsoLatin1 =+  HorizontalTab__+  | LineFeed__+  | FormFeed__+  | CarriageReturn__+  | Whitespace__+  deriving (Eq, Ord, Show, Generic)++class HasIsoLatin1 a where+  isoLatin1 :: Lens' a IsoLatin1++instance HasIsoLatin1 IsoLatin1 where+  isoLatin1 = id++class AsIsoLatin1 a where+  _IsoLatin1 :: Prism' a IsoLatin1++instance AsIsoLatin1 IsoLatin1 where+  _IsoLatin1 = id++parseIsoLatin1 ::+  CharParsing p =>+  p IsoLatin1+parseIsoLatin1 =+  asum [+    HorizontalTab__ <$ parseHorizontalTab+  , LineFeed__ <$ parseLineFeed+  , FormFeed__ <$ parseFormFeed+  , CarriageReturn__ <$ parseCarriageReturn+  , Whitespace__ <$ parseWhitespace+  ]++instance AsHorizontalTab IsoLatin1 where+  _HorizontalTab =+    prism'+      (\HorizontalTab -> HorizontalTab__)+      (\case+          HorizontalTab__ -> Just HorizontalTab+          _ -> Nothing+      )++instance AsLineFeed IsoLatin1 where+  _LineFeed =+    prism'+      (\LineFeed -> LineFeed__)+      (\case+          LineFeed__ -> Just LineFeed+          _ -> Nothing+      )++instance AsFormFeed IsoLatin1 where+  _FormFeed =+    prism'+      (\FormFeed -> FormFeed__)+      (\case+          FormFeed__ -> Just FormFeed+          _ -> Nothing+      )++instance AsCarriageReturn IsoLatin1 where+  _CarriageReturn =+    prism'+      (\CarriageReturn -> CarriageReturn__)+      (\case+          CarriageReturn__ -> Just CarriageReturn+          _ -> Nothing+      )++instance AsWhitespace IsoLatin1 where+  _Whitespace =+    prism'+      (\Whitespace -> Whitespace__)+      (\case+          Whitespace__ -> Just Whitespace+          _ -> Nothing+      )