Options.Applicative.Help.Pretty
#(.$.)
Operator alias for Text.PrettyPrint.Leijen.appendWithLine (right-associative / precedence 5)
Re-exports from Text.PrettyPrint.Leijen
#SimpleDoc
data SimpleDoc
The data type @SimpleDoc@ represents rendered documents and is used by the display functions.
Whereas values of the data type 'Doc' represent non-empty sets of possible renderings of a document, values of the data type @SimpleDoc@ represent single renderings of a document.
The @Int@ in @SText@ contains the length of the string. The @Int@ in @SLine@ contains the indentation for that line. The library provides two default display functions 'displayS' and 'displayIO'. You can provide your own display function by writing a function from a @SimpleDoc@ to your own output format.
Constructors
Instances
#LazySimpleDoc
data LazySimpleDoc
Constructors
#Docs
#Doc
data Doc
The abstract data type @Doc@ represents pretty documents.
More specifically, a value of type @Doc@ represents a non-empty set of possible renderings of a document. The rendering functions select one of these possibilities.
@Doc@ is an instance of the 'Show' class. @(show doc)@ pretty prints document @doc@ with a page width of 80 characters and a ribbon width of 32 characters.
show (text "hello" <$> text "world")
Which would return the string "hello\nworld", i.e.
@ hello world @
Constructors
Fail
Empty
Char Char
Text Int String
Line
FlatAlt Doc Doc
Cat Doc Doc
Nest Int Doc
Union Doc Doc
Column (Int -> Doc)
Columns (Maybe Int -> Doc)
Nesting (Int -> Doc)
Instances
#vsep
vsep :: Array Doc -> Doc
The document @(vsep xs)@ concatenates all documents @xs@ vertically with @(<$>)@. If a 'group' undoes the line breaks inserted by @vsep@, all documents are separated with a space.
someText = map text (words ("text to lay out"))
test = text "some" <+> vsep someText
This is layed out as:
@ some text to lay out @
The 'align' combinator can be used to align the documents under their first element
test = text "some" <+> align (vsep someText)
Which is printed as:
@ some text to lay out @
#vcat
#tupled
#text
#string
#softline
#softbreak
#sep
#semiBraces
semiBraces :: Array Doc -> Doc
The document @(semiBraces xs)@ separates the documents @xs@ with semicolons and encloses them in braces. The documents are rendered horizontally if that fits the page. Otherwise they are aligned vertically. All semicolons are put in front of the elements.
#renderSmart
renderSmart :: Number -> Int -> Doc -> SimpleDoc
A slightly smarter rendering algorithm with more lookahead. It provides provide earlier breaking on deeply nested structures For example, consider this python-ish pseudocode: @fun(fun(fun(fun(fun([abcdefg, abcdefg])))))@ If we put a softbreak (+ nesting 2) after each open parenthesis, and align the elements of the list to match the opening brackets, this will render with @renderPretty@ and a page width of 20 as: @ fun(fun(fun(fun(fun([ | abcdef, | abcdef, ] ))))) | @ Where the 20c. boundary has been marked with |. Because @renderPretty@ only uses one-line lookahead, it sees that the first line fits, and is stuck putting the second and third lines after the 20-c mark. In contrast, @renderSmart@ will continue to check that the potential document up to the end of the indentation level. Thus, it will format the document as:
@ fun( | fun( | fun( | fun( | fun([ | abcdef, abcdef, ] | ))))) | @ Which fits within the 20c. boundary.
#renderPretty
renderPretty :: Number -> Int -> Doc -> SimpleDoc
This is the default pretty printer which is used by 'show', 'putDoc' and 'hPutDoc'. @(renderPretty ribbonfrac width x)@ renders document @x@ with a page width of @width@ and a ribbon width of @(ribbonfrac * width)@ characters. The ribbon width is the maximal amount of non-indentation characters on a line. The parameter @ribbonfrac@ should be between @0.0@ and @1.0@. If it is lower or higher, the ribbon width will be 0 or @width@ respectively.
#renderFits
renderFits :: (Int -> Int -> Int -> LazySimpleDoc -> Boolean) -> Number -> Int -> Doc -> SimpleDoc
#renderCompact
renderCompact :: Doc -> SimpleDoc
@(renderCompact x)@ renders document @x@ without adding any indentation. Since no 'pretty' printing is involved, this renderer is very fast. The resulting output contains fewer characters than a pretty printed version and can be used for output that is read by other programs.
This rendering function does not add any colorisation information.
#punctuate
punctuate :: Doc -> Array Doc -> Array Doc
@(punctuate p xs)@ concatenates all documents in @xs@ with document @p@ except for the last document.
someText = map text ["words","in","a","tuple"] test = parens (align (cat (punctuate comma someText)))
This is layed out on a page width of 20 as:
@ (words,in,a,tuple) @
But when the page width is 15, it is layed out as:
@ (words, in, a, tuple) @
(If you want put the commas in front of their elements instead of at the end, you should use 'tupled' or, in general, 'encloseSep'.)
#parens
#nest
#list
#linebreak
#line
#indentation
indentation :: Int -> String
#indent
#hsep
#hcat
#hardline
#hang
hang :: Int -> Doc -> Doc
The hang combinator implements hanging indentation. The document @(hang i x)@ renders document @x@ with a nesting level set to the current column plus @i@. The following example uses hanging indentation for some text:
test = hang 4 (fillSep (map text (words "the hang combinator indents these words !")))
Which lays out on a page with a width of 20 characters as:
@ the hang combinator indents these words ! @
The @hang@ combinator is implemented as:
hang i x = align (nest i x)
#group
#forceSimpleDoc
#flatAlt
#fitsR
fitsR :: Int -> Int -> Int -> LazySimpleDoc -> Boolean
@fitsR@ has a little more lookahead: assuming that nesting roughly corresponds to syntactic depth, @fitsR@ checks that not only the current line fits, but the entire syntactic structure being formatted at this level of indentation fits. If we were to remove the second case for @SLine@, we would check that not only the current structure fits, but also the rest of the document, which would be slightly more intelligent but would have exponential runtime (and is prohibitively expensive in practice). p = pagewidth m = minimum nesting level to fit in w = the width in which to fit the first line
#fillSep
#fillCat
#fillBreak
fillBreak :: Int -> Doc -> Doc
The document @(fillBreak i x)@ first renders document @x@. It than appends @space@s until the width is equal to @i@. If the width of @x@ is already larger than @i@, the nesting level is increased by @i@ and a @line@ is appended. When we redefine @ptype@ in the previous example to use @fillBreak@, we get a useful variation of the previous output:
ptype (name,tp) = fillBreak 6 (text name) <+> text "::" <+> text tp
The output will now be:
@ let empty :: Doc nest :: Int -> Doc -> Doc linebreak :: Doc @
#fill
fill :: Int -> Doc -> Doc
The document @(fill i x)@ renders document @x@. It than appends @space@s until the width is equal to @i@. If the width of @x@ is already larger, nothing is appended. This combinator is quite useful in practice to output a list of bindings. The following example demonstrates this.
types = [("empty","Doc") ,("nest","Int -> Doc -> Doc") ,("linebreak","Doc")]
ptype (name,tp) = fill 6 (text name) <+> text "::" <+> text tp
test = text "let" <+> align (vcat (map ptype types))
Which is layed out as:
@ let empty :: Doc nest :: Int -> Doc -> Doc linebreak :: Doc @
#encloseSep
encloseSep :: Doc -> Doc -> Doc -> Array Doc -> Doc
The document @(encloseSep l r sep xs)@ concatenates the documents @xs@ separated by @sep@ and encloses the resulting document by @l@ and @r@. The documents are rendered horizontally if that fits the page. Otherwise they are aligned vertically. All separators are put in front of the elements. For example, the combinator 'list' can be defined with @encloseSep@:
list xs = encloseSep lbracket rbracket comma xs test = text "list" <+> (list (map int [10,200,3000]))
Which is layed out with a page width of 20 as:
@ list [10,200,3000] @
But when the page width is 15, it is layed out as:
@ list [10 ,200 ,3000] @
#enclose
#empty
#displayS
displayS :: SimpleDoc -> String
@(displayS simpleDoc)@ takes the output @simpleDoc@ from a rendering function and transforms it to a 'ShowS' type (for use in the 'Show' class).
showWidth :: Int -> Doc -> String showWidth w x = displayS (renderPretty 0.4 w x) ""
ANSI color information will be discarded by this function unless you are running on a Unix-like operating system. This is due to a technical limitation in Windows ANSI support.
#char
#cat
#brackets
#appendWithSpace
appendWithSpace :: Doc -> Doc -> Doc
The document @(x <+> y)@ concatenates document @x@ and @y@ with a @space@ in between. (infixr 6)
#appendWithSoftline
appendWithSoftline :: Doc -> Doc -> Doc
The document @(x </> y)@ concatenates document @x@ and @y@ with a 'softline' in between. This effectively puts @x@ and @y@ either next to each other (with a @space@ in between) or underneath each other. (infixr 5)
#appendWithSoftbreak
appendWithSoftbreak :: Doc -> Doc -> Doc
The document @(x <//> y)@ concatenates document @x@ and @y@ with a 'softbreak' in between. This effectively puts @x@ and @y@ either right next to each other or underneath each other. (infixr 5)
#appendWithLinebreak
appendWithLinebreak :: Doc -> Doc -> Doc
The document @(x <$$> y)@ concatenates document @x@ and @y@ with a @linebreak@ in between. (infixr 5)
#appendWithLine
appendWithLine :: Doc -> Doc -> Doc
The document @(x <$> y)@ concatenates document @x@ and @y@ with a 'line' in between. (infixr 5)
#align
align :: Doc -> Doc
The document @(align x)@ renders document @x@ with the nesting level set to the current column. It is used for example to implement 'hang'.
As an example, we will put a document right above another one, regardless of the current nesting level:
x $$ y = align (x <$> y)
test = text "hi" <+> (text "nice" $$ text "world")
which will be layed out as:
@ hi nice world @
#(</>)
Operator alias for Text.PrettyPrint.Leijen.appendWithSoftline (right-associative / precedence 5)
#(<//>)
Operator alias for Text.PrettyPrint.Leijen.appendWithSoftbreak (right-associative / precedence 5)
#(<+>)
Operator alias for Text.PrettyPrint.Leijen.appendWithSpace (right-associative / precedence 6)
#(<$$>)
Operator alias for Text.PrettyPrint.Leijen.appendWithLinebreak (right-associative / precedence 5)
Packages
abides
- Test.Abides.Control.Alt
- Test.Abides.Control.Alternative
- Test.Abides.Control.Applicative
- Test.Abides.Control.Apply
- Test.Abides.Control.Bind
- Test.Abides.Control.Category
- Test.Abides.Control.Comonad
- Test.Abides.Control.Extend
- Test.Abides.Control.Monad
- Test.Abides.Control.MonadPlus
- Test.Abides.Control.MonadZero
- Test.Abides.Control.Plus
- Test.Abides.Control.Semigroupoid
- Test.Abides.Data.BooleaneanAlgebra
- Test.Abides.Data.Bounded
- Test.Abides.Data.BoundedEnum
- Test.Abides.Data.CommutativeRing
- Test.Abides.Data.DivisionRing
- Test.Abides.Data.Eq
- Test.Abides.Data.EuclideanRing
- Test.Abides.Data.Foldable
- Test.Abides.Data.Functor
- Test.Abides.Data.HeytingAlgebra
- Test.Abides.Data.Monoid
- Test.Abides.Data.Ord
- Test.Abides.Data.Ring
- Test.Abides.Data.Semigroup
- Test.Abides.Data.Semiring
- Test.Abides.Properties
aff-bus
aff-coroutines
aff-promise
aff-retry
arraybuffer-types
arrays-zipper
assert
aws-encryption-sdk
basic-auth
bigints
bower-json
bucketchain-basic-auth
bucketchain-conditional
bucketchain-cors
bucketchain-csrf
bucketchain-header-utils
bucketchain-health
bucketchain-history-api-fallback
bucketchain-simple-api
- Bucketchain.SimpleAPI
- Bucketchain.SimpleAPI.Auth
- Bucketchain.SimpleAPI.Auth.Class
- Bucketchain.SimpleAPI.Batch
- Bucketchain.SimpleAPI.Body
- Bucketchain.SimpleAPI.Class
- Bucketchain.SimpleAPI.FreeT.Class
- Bucketchain.SimpleAPI.JSON
- Bucketchain.SimpleAPI.Proc
- Bucketchain.SimpleAPI.RawData
- Bucketchain.SimpleAPI.Response
- Bucketchain.SimpleAPI.Response.Class
bucketchain-sslify
bucketchain-static
bytestrings
canvas
cartesian
catenable-lists
channel
channel-stream
checked-exceptions
cheerio
cirru-parser
clipboardy
codec
concur-core
const
coroutines
css
- CSS.Animation
- CSS.Background
- CSS.Border
- CSS.Box
- CSS.Common
- CSS.Cursor
- CSS.Display
- CSS.Elements
- CSS.Flexbox
- CSS.Font
- CSS.FontFace
- CSS.FontStyle
- CSS.Geometry
- CSS.Gradient
- CSS.ListStyle
- CSS.ListStyle.Image
- CSS.ListStyle.Position
- CSS.ListStyle.Type
- CSS.Media
- CSS.Overflow
- CSS.Property
- CSS.Pseudo
- CSS.Render
- CSS.Selector
- CSS.Size
- CSS.String
- CSS.Stylesheet
- CSS.Text
- CSS.Text.Overflow
- CSS.Text.Shadow
- CSS.Text.Transform
- CSS.Text.Whitespace
- CSS.TextAlign
- CSS.Time
- CSS.Transform
- CSS.Transition
- CSS.VerticalAlign
cssom
debug
decimals
distributive
dom-filereader
dom-indexed
- DOM.HTML.Indexed
- DOM.HTML.Indexed.ButtonType
- DOM.HTML.Indexed.CrossOriginValue
- DOM.HTML.Indexed.DirValue
- DOM.HTML.Indexed.FormMethod
- DOM.HTML.Indexed.InputAcceptType
- DOM.HTML.Indexed.InputType
- DOM.HTML.Indexed.KindValue
- DOM.HTML.Indexed.MenuType
- DOM.HTML.Indexed.MenuitemType
- DOM.HTML.Indexed.OnOff
- DOM.HTML.Indexed.OrderedListType
- DOM.HTML.Indexed.PreloadValue
- DOM.HTML.Indexed.ScopeValue
- DOM.HTML.Indexed.StepValue
- DOM.HTML.Indexed.WrapValue
downloadjs
dynamic-buffer
easy-ffi
elasticsearch
- Database.ElasticSearch.Bulk
- Database.ElasticSearch.Client
- Database.ElasticSearch.Common
- Database.ElasticSearch.Create
- Database.ElasticSearch.Delete
- Database.ElasticSearch.Get
- Database.ElasticSearch.Index
- Database.ElasticSearch.Indices.Create
- Database.ElasticSearch.Indices.Delete
- Database.ElasticSearch.Internal
- Database.ElasticSearch.Query
- Database.ElasticSearch.Search
- Database.ElasticSearch.Update
elmish-html
email-validate
encoding
exceptions
exists
exitcodes
expect-inferred
fixed-points
fixed-precision
form-urlencoded
format
functions
fuzzy
geometry-plane
gomtang-basic
grain
- Grain.Class
- Grain.Class.GProxy
- Grain.Class.KGProxy
- Grain.Class.LProxy
- Grain.Internal.Diff
- Grain.Internal.Element
- Grain.Internal.Emitter
- Grain.Internal.Handler
- Grain.Internal.MArray
- Grain.Internal.MMap
- Grain.Internal.MObject
- Grain.Internal.Prop
- Grain.Internal.PropDiff
- Grain.Internal.Ref
- Grain.Internal.SpecialProp
- Grain.Internal.Store
- Grain.Internal.Styler
- Grain.Internal.Util
- Grain.Markup.Element
- Grain.Markup.Handler
- Grain.Markup.Prop
- Grain.TypeRef
- Grain.UI
grain-router
grain-virtualized
graphql-client
- Data.GraphQL.AST
- Data.GraphQL.Parser
- GraphQL.Client.Alias
- GraphQL.Client.Args
- GraphQL.Client.BaseClients.Affjax
- GraphQL.Client.BaseClients.Apollo
- GraphQL.Client.BaseClients.Apollo.ErrorPolicy
- GraphQL.Client.BaseClients.Apollo.FetchPolicy
- GraphQL.Client.BaseClients.Urql
- GraphQL.Client.CodeGen.GetSymbols
- GraphQL.Client.CodeGen.Js
- GraphQL.Client.CodeGen.Lines
- GraphQL.Client.CodeGen.Query
- GraphQL.Client.CodeGen.Schema
- GraphQL.Client.CodeGen.Template.Enum
- GraphQL.Client.CodeGen.Template.Schema
- GraphQL.Client.CodeGen.Types
- GraphQL.Client.ID
- GraphQL.Client.Query
- GraphQL.Client.QueryReturns
- GraphQL.Client.SafeQueryName
- GraphQL.Client.Subscription
- GraphQL.Client.ToGqlString
- GraphQL.Client.Types
- GraphQL.Client.WatchQuery
- GraphQL.Hasura.ComparisonExp
- GraphQL.Hasura.Decode
- GraphQL.Hasura.Encode
graphs
halogen
- Halogen
- Halogen.Aff.Driver
- Halogen.Aff.Driver.Eval
- Halogen.Aff.Driver.State
- Halogen.Aff.Util
- Halogen.Component
- Halogen.Component.Profunctor
- Halogen.Data.OrdBox
- Halogen.Data.Slot
- Halogen.HTML
- Halogen.HTML.Core
- Halogen.HTML.Elements
- Halogen.HTML.Elements.Keyed
- Halogen.HTML.Events
- Halogen.HTML.Properties
- Halogen.HTML.Properties.ARIA
- Halogen.Query
- Halogen.Query.ChildQuery
- Halogen.Query.Event
- Halogen.Query.HalogenM
- Halogen.Query.HalogenQ
- Halogen.Query.Input
- Halogen.VDom.Driver
halogen-bootstrap4
halogen-css
halogen-select
halogen-storybook
halogen-subscriptions
heterogeneous
heterogeneous-extrablatt
http-methods
httpure-middleware
identity
inflection
integers
interpolate
invariant
js-date
js-fileio
js-timers
js-uri
jwt
lazy
lcg
leibniz
machines
makkori
math
matrices
media-types
minibench
mmorph
monad-loops
monad-unlift
motsunabe
naturals
nested-functor
newtype
node-child-process
node-fs-aff
node-he
node-path
node-process
node-readline
node-sqlite3
node-streams
node-url
nonempty
now
nullable
open-folds
open-memoize
open-mkdirp-aff
open-pairing
option
options
options-extra
optparse
- Options.Applicative.BashCompletion
- Options.Applicative.Builder
- Options.Applicative.Builder.Completer
- Options.Applicative.Builder.Internal
- Options.Applicative.Common
- Options.Applicative.Extra
- Options.Applicative.Help.Chunk
- Options.Applicative.Help.Core
- Options.Applicative.Help.Levenshtein
- Options.Applicative.Help.Pretty
- Options.Applicative.Help.Types
- Options.Applicative.Internal
- Options.Applicative.Internal.Utils
- Options.Applicative.Types
- Text.PrettyPrint.Leijen
ordered-collections
ordered-set
pairs
parsing-expect
parsing-hexadecimal
parsing-uuid
parsing-validation
partial
phoenix
point-free
posix-types
prelude
- Control.Applicative
- Control.Apply
- Control.Bind
- Control.Category
- Control.Monad
- Control.Semigroupoid
- Data.Boolean
- Data.BooleanAlgebra
- Data.Bounded
- Data.Bounded.Generic
- Data.CommutativeRing
- Data.DivisionRing
- Data.Eq
- Data.Eq.Generic
- Data.EuclideanRing
- Data.Field
- Data.Function
- Data.Functor
- Data.Generic.Rep
- Data.HeytingAlgebra
- Data.HeytingAlgebra.Generic
- Data.Monoid
- Data.Monoid.Additive
- Data.Monoid.Conj
- Data.Monoid.Disj
- Data.Monoid.Dual
- Data.Monoid.Endo
- Data.Monoid.Generic
- Data.Monoid.Multiplicative
- Data.NaturalTransformation
- Data.Ord
- Data.Ord.Generic
- Data.Ordering
- Data.Ring
- Data.Ring.Generic
- Data.Semigroup
- Data.Semigroup.First
- Data.Semigroup.Generic
- Data.Semigroup.Last
- Data.Semiring
- Data.Semiring.Generic
- Data.Show
- Data.Show.Generic
- Data.Symbol
- Data.Unit
- Data.Void
- Record.Unsafe
- Type.Data.Row
- Type.Data.RowList
- Type.Proxy
prettier
prettier-printer
pretty-logs
profunctor-lenses
- Data.Lens.AffineTraversal
- Data.Lens.At
- Data.Lens.Common
- Data.Lens.Fold
- Data.Lens.Fold.Partial
- Data.Lens.Getter
- Data.Lens.Grate
- Data.Lens.Index
- Data.Lens.Indexed
- Data.Lens.Internal.Bazaar
- Data.Lens.Internal.Exchange
- Data.Lens.Internal.Focusing
- Data.Lens.Internal.Forget
- Data.Lens.Internal.Grating
- Data.Lens.Internal.Indexed
- Data.Lens.Internal.Market
- Data.Lens.Internal.Re
- Data.Lens.Internal.Shop
- Data.Lens.Internal.Stall
- Data.Lens.Internal.Tagged
- Data.Lens.Internal.Wander
- Data.Lens.Internal.Zipping
- Data.Lens.Iso
- Data.Lens.Iso.Newtype
- Data.Lens.Lens
- Data.Lens.Lens.Product
- Data.Lens.Lens.Tuple
- Data.Lens.Lens.Unit
- Data.Lens.Lens.Void
- Data.Lens.Prism
- Data.Lens.Prism.Coproduct
- Data.Lens.Prism.Either
- Data.Lens.Prism.Maybe
- Data.Lens.Record
- Data.Lens.Setter
- Data.Lens.Traversal
- Data.Lens.Types
- Data.Lens.Zoom
ps-cst
- Language.PS.CST.Printers
- Language.PS.CST.Printers.PrintImports
- Language.PS.CST.Printers.PrintModuleModuleNameAndExports
- Language.PS.CST.Printers.TypeLevel
- Language.PS.CST.Printers.Utils
- Language.PS.CST.ReservedNames
- Language.PS.CST.Sugar.Declaration
- Language.PS.CST.Sugar.Leafs
- Language.PS.CST.Sugar.QualifiedName
- Language.PS.CST.Types.Declaration
- Language.PS.CST.Types.Leafs
- Language.PS.CST.Types.Module
- Language.PS.CST.Types.QualifiedName
- Language.PS.SmartCST.ProcessModule
- Language.PS.SmartCST.ProcessSmartDeclaration
- Language.PS.SmartCST.ProcessSmartDeclaration.Utils
- Language.PS.SmartCST.Sugar.Declaration
- Language.PS.SmartCST.Types.Declaration
- Language.PS.SmartCST.Types.SmartQualifiedName
- Language.PS.SmartCST.Types.SmartQualifiedNameConstructor
psci-support
quickcheck-combinators
quickcheck-laws
- Test.QuickCheck.Laws
- Test.QuickCheck.Laws.Control.Alt
- Test.QuickCheck.Laws.Control.Alternative
- Test.QuickCheck.Laws.Control.Applicative
- Test.QuickCheck.Laws.Control.Apply
- Test.QuickCheck.Laws.Control.Bind
- Test.QuickCheck.Laws.Control.Category
- Test.QuickCheck.Laws.Control.Comonad
- Test.QuickCheck.Laws.Control.Extend
- Test.QuickCheck.Laws.Control.Monad
- Test.QuickCheck.Laws.Control.MonadPlus
- Test.QuickCheck.Laws.Control.MonadZero
- Test.QuickCheck.Laws.Control.Plus
- Test.QuickCheck.Laws.Control.Semigroupoid
- Test.QuickCheck.Laws.Data.BooleanAlgebra
- Test.QuickCheck.Laws.Data.Bounded
- Test.QuickCheck.Laws.Data.BoundedEnum
- Test.QuickCheck.Laws.Data.CommutativeRing
- Test.QuickCheck.Laws.Data.DivisionRing
- Test.QuickCheck.Laws.Data.Eq
- Test.QuickCheck.Laws.Data.EuclideanRing
- Test.QuickCheck.Laws.Data.Field
- Test.QuickCheck.Laws.Data.Foldable
- Test.QuickCheck.Laws.Data.Functor
- Test.QuickCheck.Laws.Data.FunctorWithIndex
- Test.QuickCheck.Laws.Data.HeytingAlgebra
- Test.QuickCheck.Laws.Data.Monoid
- Test.QuickCheck.Laws.Data.Ord
- Test.QuickCheck.Laws.Data.Ring
- Test.QuickCheck.Laws.Data.Semigroup
- Test.QuickCheck.Laws.Data.Semiring
quickcheck-utf8
quotient
random
rationals
rave
react-basic-classic
react-basic-emotion
react-dom
react-enzyme
react-testing-library
read
record-extra
record-extra-srghma
- Record.ExtraSrghma.CompareRecord
- Record.ExtraSrghma.FoldlValues
- Record.ExtraSrghma.FoldlValuesWithIndex
- Record.ExtraSrghma.FoldrValues
- Record.ExtraSrghma.FoldrValuesLazy
- Record.ExtraSrghma.FoldrValuesWithIndex
- Record.ExtraSrghma.Keys
- Record.ExtraSrghma.MapIndex
- Record.ExtraSrghma.MapRecord
- Record.ExtraSrghma.MapValuesWithIndex
- Record.ExtraSrghma.ParSequenceRecord
- Record.ExtraSrghma.SequenceRecord
- Record.ExtraSrghma.ValuesToUnfoldableLazy
- Record.ExtraSrghma.ZipRecord
redux-devtools
refs
remotedata
result
return
ring-modules
row-extra
safe-coerce
safely
scrypt
selection-foldable
semirings
server-sent-events
setimmediate
simple-ajax
simple-emitter
simple-json
simple-jwt
simple-ulid
sized-vectors
slug
snabbdom
sparse-matrices
sparse-polynomials
spec
- Test.Spec
- Test.Spec.Assertions
- Test.Spec.Assertions.String
- Test.Spec.Console
- Test.Spec.Reporter.Base
- Test.Spec.Reporter.Console
- Test.Spec.Reporter.Dot
- Test.Spec.Reporter.Spec
- Test.Spec.Reporter.Tap
- Test.Spec.Result
- Test.Spec.Runner
- Test.Spec.Runner.Event
- Test.Spec.Speed
- Test.Spec.Style
- Test.Spec.Summary
- Test.Spec.Tree
spec-discovery
spec-mocha
spec-quickcheck
strings
- Data.Char
- Data.Char.Gen
- Data.String.CaseInsensitive
- Data.String.CodePoints
- Data.String.CodeUnits
- Data.String.Common
- Data.String.Gen
- Data.String.NonEmpty.CaseInsensitive
- Data.String.NonEmpty.CodePoints
- Data.String.NonEmpty.CodeUnits
- Data.String.NonEmpty.Internal
- Data.String.Pattern
- Data.String.Regex
- Data.String.Regex.Flags
- Data.String.Regex.Unsafe
- Data.String.Unsafe
strings-extra
stringutils
subcategory
- Control.Subcategory.Adjoint
- Control.Subcategory.Category
- Control.Subcategory.Closed
- Control.Subcategory.ClosedMonoidal
- Control.Subcategory.ClosedSemimonoidal
- Control.Subcategory.Constituency
- Control.Subcategory.Endofunctor
- Control.Subcategory.Endofunctor.Applicative
- Control.Subcategory.Endofunctor.Apply
- Control.Subcategory.Endofunctor.Bind
- Control.Subcategory.Endofunctor.Discard
- Control.Subcategory.Endofunctor.HasApply
- Control.Subcategory.Endofunctor.HasBind
- Control.Subcategory.Endofunctor.HasCompose
- Control.Subcategory.Endofunctor.HasConst
- Control.Subcategory.Endofunctor.HasMap
- Control.Subcategory.Endofunctor.HasPoint
- Control.Subcategory.Endofunctor.HasPure
- Control.Subcategory.Endofunctor.HasUnpoint
- Control.Subcategory.Endofunctor.Monad
- Control.Subcategory.Endofunctor.Parameterized.HasConst
- Control.Subcategory.Functor
- Control.Subcategory.Functor.Discard
- Control.Subcategory.Functor.HasApply
- Control.Subcategory.Functor.HasBind
- Control.Subcategory.Functor.HasConst
- Control.Subcategory.Functor.HasMap
- Control.Subcategory.Functor.HasPure
- Control.Subcategory.Functor.Parameterized.HasConst
- Control.Subcategory.HasCompose
- Control.Subcategory.HasCurriedEval
- Control.Subcategory.HasCurry
- Control.Subcategory.HasIdentity
- Control.Subcategory.HasIntroduce
- Control.Subcategory.HasStart
- Control.Subcategory.HasTJoin
- Control.Subcategory.HasTUnit
- Control.Subcategory.HasTerminate
- Control.Subcategory.HasUncurriedEval
- Control.Subcategory.HasUncurry
- Control.Subcategory.HasUnit
- Control.Subcategory.Monoidal
- Control.Subcategory.Profunctor
- Control.Subcategory.Profunctor.HasDimap
- Control.Subcategory.Relation.Reflexive
- Control.Subcategory.Relation.Symmetric
- Control.Subcategory.Restrictable
- Control.Subcategory.Semigroupoid
- Control.Subcategory.Semimonoidal
- Control.Subcategory.Slackable
- Control.Subcategory.Strength
substitute
suggest
sunde
supply
systemd-journald
tailrec
text-encoding
thermite
thermite-dom
toppokki
transformers
- Control.Comonad.Env
- Control.Comonad.Env.Class
- Control.Comonad.Env.Trans
- Control.Comonad.Store
- Control.Comonad.Store.Class
- Control.Comonad.Store.Trans
- Control.Comonad.Traced
- Control.Comonad.Traced.Class
- Control.Comonad.Traced.Trans
- Control.Comonad.Trans.Class
- Control.Monad.Cont
- Control.Monad.Cont.Class
- Control.Monad.Cont.Trans
- Control.Monad.Error.Class
- Control.Monad.Except
- Control.Monad.Except.Trans
- Control.Monad.Identity.Trans
- Control.Monad.List.Trans
- Control.Monad.Maybe.Trans
- Control.Monad.RWS
- Control.Monad.RWS.Trans
- Control.Monad.Reader
- Control.Monad.Reader.Class
- Control.Monad.Reader.Trans
- Control.Monad.State
- Control.Monad.State.Class
- Control.Monad.State.Trans
- Control.Monad.Trans.Class
- Control.Monad.Writer
- Control.Monad.Writer.Class
- Control.Monad.Writer.Trans
tree-rose
turf
two-or-more
type-equality
typedenv
typelevel-lists
undefinable
undefined
undefined-is-not-a-problem
undefined-or
unfoldable
unordered-collections
unsafe-coerce
unsafe-reference
untagged-union
uri
- URI.AbsoluteURI
- URI.Authority
- URI.Common
- URI.Extra.MultiHostPortPair
- URI.Extra.QueryPairs
- URI.Extra.UserPassInfo
- URI.Fragment
- URI.HierarchicalPart
- URI.Host
- URI.Host.Gen
- URI.Host.IPv4Address
- URI.Host.IPv6Address
- URI.Host.RegName
- URI.HostPortPair
- URI.HostPortPair.Gen
- URI.Path
- URI.Path.Absolute
- URI.Path.NoScheme
- URI.Path.Rootless
- URI.Path.Segment
- URI.Port
- URI.Port.Gen
- URI.Query
- URI.RelativePart
- URI.RelativeRef
- URI.Scheme
- URI.Scheme.Common
- URI.URI
- URI.URIRef
- URI.UserInfo
url-regex-safe
uuid
vectorfield
veither
vexceptt
web-dom
- Web.DOM.CharacterData
- Web.DOM.ChildNode
- Web.DOM.Comment
- Web.DOM.DOMTokenList
- Web.DOM.Document
- Web.DOM.DocumentFragment
- Web.DOM.DocumentType
- Web.DOM.Element
- Web.DOM.HTMLCollection
- Web.DOM.Internal.Types
- Web.DOM.MutationObserver
- Web.DOM.MutationRecord
- Web.DOM.Node
- Web.DOM.NodeList
- Web.DOM.NodeType
- Web.DOM.NonDocumentTypeChildNode
- Web.DOM.NonElementParentNode
- Web.DOM.ParentNode
- Web.DOM.ProcessingInstruction
- Web.DOM.ShadowRoot
- Web.DOM.Text
web-dom-parser
web-html
- Web.HTML
- Web.HTML.Common
- Web.HTML.Event.BeforeUnloadEvent
- Web.HTML.Event.BeforeUnloadEvent.EventTypes
- Web.HTML.Event.DataTransfer
- Web.HTML.Event.DragEvent
- Web.HTML.Event.DragEvent.EventTypes
- Web.HTML.Event.ErrorEvent
- Web.HTML.Event.EventTypes
- Web.HTML.Event.HashChangeEvent
- Web.HTML.Event.HashChangeEvent.EventTypes
- Web.HTML.Event.PageTransitionEvent
- Web.HTML.Event.PageTransitionEvent.EventTypes
- Web.HTML.Event.PopStateEvent
- Web.HTML.Event.PopStateEvent.EventTypes
- Web.HTML.Event.TrackEvent
- Web.HTML.Event.TrackEvent.EventTypes
- Web.HTML.HTMLAnchorElement
- Web.HTML.HTMLAreaElement
- Web.HTML.HTMLAudioElement
- Web.HTML.HTMLBRElement
- Web.HTML.HTMLBaseElement
- Web.HTML.HTMLBodyElement
- Web.HTML.HTMLButtonElement
- Web.HTML.HTMLCanvasElement
- Web.HTML.HTMLDListElement
- Web.HTML.HTMLDataElement
- Web.HTML.HTMLDataListElement
- Web.HTML.HTMLDivElement
- Web.HTML.HTMLDocument
- Web.HTML.HTMLDocument.ReadyState
- Web.HTML.HTMLElement
- Web.HTML.HTMLEmbedElement
- Web.HTML.HTMLFieldSetElement
- Web.HTML.HTMLFormElement
- Web.HTML.HTMLHRElement
- Web.HTML.HTMLHeadElement
- Web.HTML.HTMLHeadingElement
- Web.HTML.HTMLHyperlinkElementUtils
- Web.HTML.HTMLIFrameElement
- Web.HTML.HTMLImageElement
- Web.HTML.HTMLImageElement.CORSMode
- Web.HTML.HTMLImageElement.DecodingHint
- Web.HTML.HTMLImageElement.Laziness
- Web.HTML.HTMLInputElement
- Web.HTML.HTMLKeygenElement
- Web.HTML.HTMLLIElement
- Web.HTML.HTMLLabelElement
- Web.HTML.HTMLLegendElement
- Web.HTML.HTMLLinkElement
- Web.HTML.HTMLMapElement
- Web.HTML.HTMLMediaElement
- Web.HTML.HTMLMediaElement.CanPlayType
- Web.HTML.HTMLMediaElement.NetworkState
- Web.HTML.HTMLMediaElement.ReadyState
- Web.HTML.HTMLMetaElement
- Web.HTML.HTMLMeterElement
- Web.HTML.HTMLModElement
- Web.HTML.HTMLOListElement
- Web.HTML.HTMLObjectElement
- Web.HTML.HTMLOptGroupElement
- Web.HTML.HTMLOptionElement
- Web.HTML.HTMLOutputElement
- Web.HTML.HTMLParagraphElement
- Web.HTML.HTMLParamElement
- Web.HTML.HTMLPreElement
- Web.HTML.HTMLProgressElement
- Web.HTML.HTMLQuoteElement
- Web.HTML.HTMLScriptElement
- Web.HTML.HTMLSelectElement
- Web.HTML.HTMLSourceElement
- Web.HTML.HTMLSpanElement
- Web.HTML.HTMLStyleElement
- Web.HTML.HTMLTableCaptionElement
- Web.HTML.HTMLTableCellElement
- Web.HTML.HTMLTableColElement
- Web.HTML.HTMLTableDataCellElement
- Web.HTML.HTMLTableElement
- Web.HTML.HTMLTableHeaderCellElement
- Web.HTML.HTMLTableRowElement
- Web.HTML.HTMLTableSectionElement
- Web.HTML.HTMLTemplateElement
- Web.HTML.HTMLTextAreaElement
- Web.HTML.HTMLTimeElement
- Web.HTML.HTMLTitleElement
- Web.HTML.HTMLTrackElement
- Web.HTML.HTMLTrackElement.ReadyState
- Web.HTML.HTMLUListElement
- Web.HTML.HTMLVideoElement
- Web.HTML.History
- Web.HTML.Location
- Web.HTML.Navigator
- Web.HTML.SelectionMode
- Web.HTML.ValidityState
- Web.HTML.Window
web-resize-observer
web-uievents
- Web.UIEvent.CompositionEvent
- Web.UIEvent.CompositionEvent.EventTypes
- Web.UIEvent.EventTypes
- Web.UIEvent.FocusEvent
- Web.UIEvent.FocusEvent.EventTypes
- Web.UIEvent.InputEvent
- Web.UIEvent.InputEvent.EventTypes
- Web.UIEvent.KeyboardEvent
- Web.UIEvent.KeyboardEvent.EventTypes
- Web.UIEvent.MouseEvent
- Web.UIEvent.MouseEvent.EventTypes
- Web.UIEvent.UIEvent
- Web.UIEvent.WheelEvent
- Web.UIEvent.WheelEvent.EventTypes
which