h$H      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ["None\ large-anon Optionally  qualified import declaration]^_`abcdefghijklmnopqrstuvwxyz{|}~ \None large-anonNaming things is hardThe , monad transformer that provides two things: , we will not attempt to use the fact that this means that T1 ~ T2+, nor any derived conclusions thereof). We will however try to apply the canononical equalities as often as is necessary (e.g., first applying x ~ T y, then applying y ~ T2).(We solve this problem by constructing a (: a possibly non-deterministic substitution mapping type variables to types of the form above (that is, a type constructor applied to some arguments).We detail the construction of this substitution below (see documentation of ( and (), but once we have this substitution, the recognition problem becomes easy: 1Without loss of generality, let  be of the form t arg1 arg2 .. argNIf t is a  , we're done.Otherwise, if t is a variable x , lookup x in the substitution; if there is one (or more) mappings for x, then we have successfully recognized  to be of the form above. There is no need to apply the substitution repeatedly.The substitution is non-deterministic because there might be multiple matches. For example, if we have !type family Foo where Foo = Int#then we might well have equalities x ~ Int, x ~ Foo in scope, and so a type x would match two different 8s. What we do know, however, is that if  matches both t arg1 .. argN and t' arg1' .. argM' (possibly N /= M), then "t arg1 .. argN ~ t' arg1' .. argM'If t == t'7, we can conclude that the arguments are equal only if t is injective.( large-anon Construct (*This is the main function that builds the ( from the set of " given " constraints. The actual work is done by ( and (.( large-anonLike ., but taking canonical equalities into accountSee ( for a detailed discussion.(((None5C ( large-anonParse successful( large-anonDifferent constraint than we're looking for (does not imply an error)( large-anonConstraint of the shape we're looking for, but something is wrong( large-anon>Apply parser to each value in turn, bailing at the first error( large-anon Variation on ( which rules out the error case( large-anon/Bundle the parse result with the original value( large-anonGeneric constraint parserTODO: If we add some parsing infra to ghc-tcplugin-api, maybe a (form of) this function could live there too.( large-anonSpecialization of (, just checking the class name( large-anonParse #x ': xs == (':) x xs == ((':) x) xs( large-anonParse '[]( large-anon2Parse application of an injective type constructor( large-anon)Do we want to try and match against this? large-anonParser for the class arguments large-anonConstraint to parse( large-anon"Predicate we want to match against large-anonParser for the class arguments large-anonConstraint to parse ((((((((((((None#$/D( large-anonParsed form of an KnownFieldLabel f constraint( large-anonThe underlying  FastString when the label is a literal.( large-anonThe raw type argument to the KnownFieldLabel constraint.(((())NoneE) large-anonAlter an existing keyReturns ) if the key does not exist.O(1).) large-anonCannot derive ) because the ) instance for ) is wrong (not strict) )))))))))None#$57L) large-anon%Reason why we cannot failed to prove SubRow) large-anon/We do not support precords with shadowed fieldsSince these fields can only come from the source record, and shadowed fields in the source record are invisible, shadowed fields in the target could only be duplicates of the same field in the source. This is not particularly useful, so we don't support it. Moreover, since we actually create lenses from these subrows, it is important that every field in the source record corresponds to at most one field in the target.) large-anon3Some fields in the target are missing in the source) large-anon"Record with statically known shape) large-anonInformation about each field in the record, in user-specified order.Order matters, because records with the same fields in a different order are not considered equal by the library (merely isomorphic).0May contain duplicates (if fields are shadowed).) large-anon2"Most recent" position of each field in the record-Shadowed fields are not included in this map. Invariant:  HashMap.lookup n knownRecordNames == Just i ==> knownFieldName (knownRecordVector V.! i) == n) large-anon&Are all fields in this record visible?) if some fields are shadowed.) large-anon'Check if one row is a subrow of anotherIf it is, returns the paired information from both records in the order of the target& record along with the index into the source record.See )" for some discussion of shadowing.) large-anon>Fields of the record in the order they appear in the row types?In other words, fields earlier in the list shadow later fields.))))))))))))))None#$O) large-anonFind field type by name-Since records are left-biased, we report the first match, independent of what is in the record tail. If however we encounter an unknown (variable) field, we stop the search: even if a later field matches the one we're looking for, the unknown field might too and, crucially, might not have the same type.Put another way: unlike in checkAllFieldsKnown, we do not insist that all fields are known here, but only the fields up to (including) the one we're looking for.6Returns the index and the type of the field, if found.) large-anon$Return map from field name to type, if all fields are statically known))))))))None#$/Re) large-anonParsed form of a RowHasField n r with  r :: Row k constraint) large-anonLabel we're looking for (n)) large-anon%Fields of the record (parsed form of r)=These may be fully or partially known, or completely unknown.) large-anon Row kind (k)) large-anonRecord field (n)) large-anonRow (r)) large-anon,Type of the record field we're looking for (a) Although a will be of the form f a' for some a', we do not enforce that here (but instead generate a new wanted equality constraint to enforce this). ))))))))))None#$%&R)None#$/S) large-anonParsed form of SubRow 1SubRow (r :: [(Symbol, k)]) (r' :: [(Symbol, k)])) large-anonFields on the LHS) large-anonFields on the RHS) large-anonLeft-hand side (r)) large-anonRight-hand side (r')) large-anonFunctor argument kind (k) )))))))))None#$%/U) large-anonParsed form of a $KnownFields (r :: [(Symbol, Kind)])  constraint) large-anonFields of the record) large-anonType of the record fields (r)) large-anonKind of the type information (k))))))))None#$/V) large-anonParsed form of  AllFields c r) large-anon%Fields of the record (parsed form of r)) large-anonType of the fields (r)) large-anon$Constraint required for each field (c)) large-anonConstraint argument kind (the k in c :: k -> Constraint)))))))))None#$/V)NoneW) large-anonThe large-anon pluginsThis consists of two plugins: The type checker plugin forms the heart of this package. It solves the various constraints we have on rows, and computes type-level metadata.The source plugin offers syntactic sugar for record construction.)None<Z) large-anon Strict vector"Implemented as a wrapper around a ). NOTE: None of the operations on Vector do any bounds checking.NOTE: Vector$ is implemented as a newtype around ), which in turn is defined as .data SmallArray a = SmallArray (SmallArray# a) Furthermore,  Canonical is a newtype around Vector, which is then used in Record as data Record (f :: k -> Type) (r :: Row k) = Record { recordCanon :: {-# UNPACK #-} !(Canonical f) , .. }This means that Record will have direct access (no pointers) to the  'SmallArray#'. ))))))))))))None#$%.2<>d ) large-anonCanonical record representation3Canonicity here refers to the fact that we have no Diff to apply (see #Data.Record.Anonymous.Internal.Diff). In this case, the record is represented as a strict vector in row order ( large-anon is strict by default; lazy records can be achieved using boxing). This order is important: it makes it possible to define functions such as mapM, (for which ordering must be well-defined).Type level shadowing is reflected at the term level: if a record has duplicate fields in its type, it will have multiple entries for that field in the vector.TODO: Currently we have no way of recovering the value of shadowed fields, adding an API for that is future work. The work by Daan Leijen on scoped labels might offer some inspiration there.?NOTE: When we cite the algorithmic complexity of operations on ), we assume that HashMap inserts and lookups are O(1), which they are in practice (especially given the relatively small size of typical records), even if theoretically they are O(log n)!. See also the documentation of Data.HashMap.Strict.) large-anon Get field at the specified indexO(1).) large-anon#Set fields at the specified indicesO(n) in the size of the record (independent of the number of field updates) O(1)! if the list of updates is empty.) large-anonTo strict vector) large-anonFrom strict vector) large-anonAll fields in row order O(n)) large-anon From list of fields in row orderO(n).) large-anonInsert fields into the recordIt is the responsibility of the caller to make sure that the linear concatenation of the new fields to the existing record matches the row order of the new record.O(n)7 in the number of inserts and the size of the record. O(1)! if the list of inserts is empty.) large-anon-Project out some fields in the selected orderIt is the responsibility of the caller that the list of indices is in row order of the new record.O(n) (in both directions)) large-anonZip two records7Precondition: the two records must have the same shape.) large-anonApplicative zip of two records7Precondition: the two records must have the same shape.)))))))))))))))))None #$.2>p: ) large-anonRecord changes to a () ) record.Unlike  and ),   and  !) deal with a single field at a time, at O(1)% cost. This is the raison d'tre of ): amortize the cost of repeated updates/inserts. Specifically, a series of inserts or updates will build a ) which will take O(n) to apply, but that ) should be executed( only when we do an operation which is O(n)$ anyway, thereby absorbing the cost.This is also the reason that ) is name based, not index based: inserting a new field would increase all indices of existing fields by 1, an inherently O(n) operation. NOTE: As for )7, when citing algorithmic complexity of operations on ), we assume that HashMap inserts and lookups are O(1). See )! for more detailed justification. NOTE: Since  large-anon currently only supports records with strict fields, we use strict HashMap here.) large-anonNew values of existing fields%Indices refer to the original record.) large-anon0List of new fields, most recently inserted firstMay contain duplicates: fields inserted later shadow earlier fields.) large-anon$Values for the newly inserted fieldsIf the field is shadowed, the list will have multiple entries. Entries in the lists are from new to old, so the head of the list is the "currently visible" entry.) large-anonEmpty differencePostcondition: apply empty c == c) large-anon Get fieldPrecondition: field must be present in the diff or in the record. Postcondition: .Diff.get f d c == Canon.get f (Diff.apply d c)O(1).) large-anonUpdate existing fieldPrecondition: field must be present in the diff or in the record. Postcondition: Diff.apply (Diff.set f x c d) c == Canon.set [(f, x)] (apply d c)It is useful to spell out what happens when inserts and updated are mixed:When a field is inserted and then updated, we just update the corresponding entry in ).When an existing field is first updated and then a new field with the same name is added, an entry is added to ) but ) will also contain an entry for this field. This doesn't matter: when the diff is applied, the new field will shadow the old, and when we )' the value of a field, we similarly first check ). When the same field is inserted more than once, updates to that field will effectively affect all of them (since we store only a single value), but only the first value will matter as it will shadow all the others.O(1).) large-anonInsert new fieldPrecondition: none (if the field already exists, it will be shadowed). Postcondition: Diff.apply (Diff.insert f x d) c = Canon.insert [(f, x)] (apply d c)(1).) large-anon Apply diffO(n) in the size of the ) and the ) in general. O(1) if the ) is empty. ))))))))))"Nonepl)#None'(-./>u ) large-anonIn order of the fields in the target record, the index in the source large-anon SubrecordsIf  SubRow r r'* holds, we can project (or create a lens) r to r'. See $ for detailed discussion. large-anon:Symbol (type-level string) with compile-time computed hash0Instances are computed on the fly by the plugin. large-anonMerge two rowsSee % for detailed discussion. large-anon Require that c x holds for every (n := x) in r.) large-anon$Vector of dictionaries, in row order large-anonLike ., but for the simple API (no functor argument)  SimpleFieldTypes [ "a" := Int, "b" := Bool ] == [ '("a", Int), '("b", Bool) ] large-anonType-level metadata  FieldTypes Maybe [ "a" := Int, "b" := Bool ] == [ '("a", Maybe Int), '("b", Maybe Bool) ] large-anon Require that all field names in r are known large-anonSpecialized form of HasFieldRowHasField n r a holds if there is an (n := a) in r. large-anonRow: type-level list of field names and corresponding field types) large-anonPair of values8This is used exclusively promoted to the type level, in .)))))))))))))*****&None'(-vV large-anonEvidence of some constraint c This is like '#, but without the functor argument. ****(None#$%&'(-./>?z ! large-anonDiscovered row variableSee ) for detailed discussion.# large-anon#Existential type ("there exists an x such that f x")% large-anon InRow r a$ is evidence that there exists some n s.t. (n := a) in r.' large-anonProxy for a field name, with * instanceThe *$ instance makes it possible to write #footo mean Field (Proxy @"foo")( large-anonAnonymous record* large-anonProject out subrecordThis is just the * getter.* large-anonInject subrecordThis is just the * setter.* large-anon!Introduce type variable for a row* large-anonInsert field into a record and introduce type variable for the result* large-anon&Type of the record we are constructing large-anonNew field to be inserted large-anonValue of the new field large-anonRecord constructed so far large-anon8Assign type variable to new partial record, and continue,!"#$%&'*(************************************None#$%/>?) large-anonAnonymous recordA Record r has a field n of type x for every (n := x) in r.To construct a ), use ! and + , or use the ANON syntax. See ! for examples./To access fields of the record, either use the  instances (possibly using the record-dot-preprocessor ), or using , and .Remember to enable the plugin when working with anonymous records: 4{-# OPTIONS_GHC -fplugin=Data.Record.Anon.Plugin #-}NOTE: For some applications it is useful to have an additional functor parameter f, so that every field has type f x instead. See Data.Record.Anon.Advanced.* large-anonGet field from the recordThis is just a wrapper around *.* large-anonUpdate field in the recordThis is just a wrapper around *.* large-anon!Introduce type variable for a row* large-anonInsert field into a record and introduce type variable for the result* large-anon&Type of the record we are constructing large-anonNew field to be inserted large-anonValue of the new field large-anonRecord constructed so far large-anon8Assign type variable to new partial record, and continue'*)***************NoneZ$  #$'$'#$  None -./?/#* large-anon Empty record+ large-anonInsert new field:{3example :: Record Maybe [ "a" := Bool, "b" := Int ] example = insert #a (Just True) $ insert #b Nothing $ empty:}Instead of using + and *, you can also write this as >example = ANON_F { a = Just True , b = Nothing }, large-anonApplicative insert This is a simple wrapper around +, but can be quite useful when constructing records. Consider code like:{2example :: Applicative m => m a -> m b -> m (a, b)!example ma mb = (,) <$> ma <*> mb:}We cannot really extend this to the world of named records, but we can2 do something comparable using anonymous records::{ example :: Applicative m> => m (f a) -> m (f b) -> m (Record f [ "a" := a, "b" := b ])example ma mb = insertA #a ma $ insertA #b mb $ Prelude.pure empty:}As for regular +1, this example too can instead be written using ANON_F and = (or >). example ma mb = sequenceA $ ANON_F { a = Comp ma , b = Comp mb }- large-anon'Apply all pending changes to the recordUpdates to a record are stored in a hashtable. As this hashtable grows, record field access and update will become more expensive. Applying the updates, resulting in a flat vector, is an O(n)= operation. This will happen automatically whenever another O(n) operation is applied (for example, mapping a function over the record). However, occassionally it is useful to explicitly apply these changes, for example after constructing a record or updating a lot of fields.. large-anonGet field from the recordThis is just a wrapper around getField.:{example :: Record Maybe [ "a" := Bool, "b" := Int ] -> Maybe Boolexample r = get #a r:} If using record-dot-preprocessor$, you can also write this example as example r = r.aIf the field does not exist, you will get a type error about an unsolvable  constraint::{absentField :: Record Maybe [ "a" := Bool, "b" := Int ] -> Maybe CharabsentField r = get #c r:}...&...No instance for (RowHasField "c"......3Type mismatches will result in regular type errors::{wrongType :: Record Maybe [ "a" := Bool, "b" := Int ] -> Maybe CharwrongType r = get #a r:}..."...Couldn't match...Char...Bool......When part of the record is not known, it might not be possible to resolve a ( constraint until later. For example, in:{unknownField :: Record Maybe [ x := Bool, "b" := Int ] -> Maybe IntunknownField r = get #b r:}...&...No instance for (RowHasField "b"...... (Note that x here is a variable, not a string.) It is important that the constraint remains unsolved in this example, because if x == "b", the first field would shadow the second, and the result type should be  Maybe Bool instead of  Maybe Int./ large-anonUpdate field in the recordThis is just a wrapper around setField.:{ example ::- Record Maybe [ "a" := Bool, "b" := Int ]- -> Record Maybe [ "a" := Bool, "b" := Int ]!example r = set #a (Just False) r:} If using record-dot-preprocessor , can also write this example as example r = r{a = Just False}0 large-anon"Project from one record to anotherBoth the source record and the target record must be fully known.The target record can omit fields from the source record, as well as rearrange them::{ example ::6 Record f [ "a" := Char, "b" := Int, "c" := Bool ]* -> Record f [ "c" := Bool, "a" := Char ]example = project:}!Of course, it is not possible to add fields::{ example ::* Record f [ "c" := Bool, "a" := Char ]6 -> Record f [ "a" := Char, "b" := Int, "c" := Bool ]example = project:}......No instance for (SubRow......Type inference will work through projections: field types are unified based on their name::{ example ::6 Record f [ "a" := Char, "b" := Int, "c" := Bool ]' -> Record f [ "c" := _, "a" := Char ]example = project:}... ...Found type wildcard...Bool...... As we saw in 3, 0 can also flatten d rows.1 large-anon(Inject smaller record into larger recordThis is just the 2 setter.2 large-anonLens from one record to anotherSee 0 for examples (0/ is just the lens getter, without the setter).3 large-anonMerge two recordsThe  type family does not reduce::{5example :: Record Maybe (Merge '[ "a" := Bool ] '[])3example = merge (insert #a (Just True) empty) empty:}:If you want to flatten the row after merging, you can use 0::{)example :: Record Maybe '[ "a" := Bool ]=example = project $ merge (insert #a (Just True) empty) empty:} constraints can be resolved for merged records, subject to the same condition discussed in .: all fields in the record must be known up to the requested field (in case of shadowing). So the record may be fully known::{example :: Record f (Merge '[ "a" := Bool ] '[ "b" := Char ]) -> f Charexample r = get #b r:}but it doesn't have to be::{8example :: Record I (Merge '[ "a" := Bool ] r) -> I Boolexample = get #a:}However, just like in the case of unknown fields (see example in .), if earlier parts in the record are unknown we get type error::{8example :: Record I (Merge r '[ "b" := Char ]) -> I Charexample r = get #b r:}...&...No instance for (RowHasField "b"......4 large-anon Analogue to *5 large-anon Analogue to -.6 large-anonConstrained form of 47 large-anonConstrained form of 68 large-anon Analogue of -/9 large-anonConstrained form of 8: large-anon Analogue of *; large-anon Analogue of 01< large-anonLike ;, but also include field names= large-anon Analogue of -2> large-anonSimplified form of =? large-anon Analogue of -3@ large-anon Analogue of -4A large-anon Analogue of 56B large-anonConstrained form of @C large-anonConstrained form of AD large-anonRecord of dictionariesThis reifies an  constraint as a record. Inverse to G.E large-anon Establish  from a record of dictionaries Inverse to F.F large-anonRecord of field namesThis reifies a  constraint as a record. Inverse to E.G large-anon Establish  from a record of field names Inverse to D.H large-anon Record over r'& with evidence that every field is in r.This reifies a  constraint. Inverse to I.I large-anon Establish  from a record of evidence. Inverse to H.J large-anon;Construct record with existentially quantified row variableExistentially quantified records arise for example when parsing JSON values as records. Pattern matching on the result of J= brings into scope an existentially quantified row variable r, along with a record over r; every field in record contains the value specified, as well as evidence that that that field is indeed an element of r.For such a record to be useful, you will probably want to prove additional constraints  AllFields r c; you can do this using E), provided that you carefully pick your f$ such that you can define a function ,fieldSatisfiesC :: forall c. f x -> Dict c x for every c you want to prove.It is also possible to do a runtime check to see if the existential row r. can be projected to some concrete known row r'7. To do this, construct a record of evidence with type Record (InRow r) r'and then call I. To construct this record of evidence you will need to do a runtime type check to verify that the types of the fields in concrete row match the types of the corresponding fields in the inferred row (the inferred row may contain fields that are not present in the concrete row, of course). An obvious candidate for doing this is 78, but for specific applications (with specific subsets of types of interest) other choices may be possible also.The  large-anon test suite contains examples of doing both of these things; see Test.Infra.DynRecord.Simple (or Test.Infra.DynRecord.Advanced for rows over kind other than Type7) for examples of proving additional constraints, and Test.Infra.Discovery8 for an example of how you could do a projection check.K large-anon!Introduce type variable for a row%This can be used in conjunction with L::{=example :: Record I '[ "a" := Int, "b" := Char, "c" := Bool ](example = letRecordT $ \p -> castEqual $. letInsertAs p #c (I True) empty $ \xs02 ->. letInsertAs p #b (I 'X' ) xs02 $ \xs01 ->. letInsertAs p #a (I 1 ) xs01 $ \xs00 -> castEqual xs00:}L large-anonInsert field into a record and introduce type variable for the resultL large-anon&Type of the record we are constructing large-anonNew field to be inserted large-anonValue of the new field large-anonRecord constructed so far large-anon8Assign type variable to new partial record, and continue(!"%&(*+,-./0123456789:;<=>?@ABCDEFGHIJKL((*+,-./01234689:;<57=>?@ABCDEFG%&HI!"JKLNone/?M large-anon Empty recordN large-anonInsert new field:{-example :: Record [ "a" := Bool, "b" := Int ] example = insert #a True $ insert #b 1 $ empty:}Instead of using N and M, you can also write this as 1example = ANON { a = True , b = 1 }O large-anonApplicative insert This is a simple wrapper around N, but can be quite useful when constructing records. Consider code like:{2example :: Applicative m => m a -> m b -> m (a, b)!example ma mb = (,) <$> ma <*> mb:}We cannot really extend this to the world of named records, but we can2 do something comparable using anonymous records::{example :: Applicative m => m a -> m b -> m (Record [ "a" := a, "b" := b ])example ma mb = insertA #a ma $ insertA #b mb $ pure empty:}However, it may be more convenient to use the advanced API for this. See 9.P large-anon'Apply all pending changes to the recordUpdates to a record are stored in a hashtable. As this hashtable grows, record field access and update will become more expensive. Applying the updates, resulting in a flat vector, is an O(n)= operation. This will happen automatically whenever another O(n) operation is applied (for example, mapping a function over the record). However, occassionally it is useful to explicitly apply these changes, for example after constructing a record or updating a lot of fields.Q large-anonGet field from the recordThis is just a wrapper around getField.:{5example :: Record [ "a" := Bool, "b" := Int ] -> Boolexample r = get #a r:} If using record-dot-preprocessor$, you can also write this example as example r = r.aSee , for additional discussion.R large-anonUpdate field in the recordThis is just a wrapper around setField.:{ example ::' Record [ "a" := Bool, "b" := Int ]' -> Record [ "a" := Bool, "b" := Int ]example r = set #a False r:} If using record-dot-preprocessor , can also write this example as example r = r{a = False}S large-anon"Project from one record to anotherBoth the source record and the target record must be fully known.The target record can omit fields from the source record, as well as rearrange them::{ example ::4 Record [ "a" := Char, "b" := Int, "c" := Bool ]( -> Record [ "c" := Bool, "a" := Char ]example = project:} As we saw in V, S can also flatten  d rows. See $ for additional discussion.T large-anon(Inject smaller record into larger recordThis is just the U setter.U large-anonLens from one record to anotherSee S for examples (S/ is just the lens getter, without the setter).V large-anonMerge two recordsThe  type family does not reduce::{/example :: Record (Merge '[ "a" := Bool ] '[]),example = merge (insert #a True empty) empty:}:If you want to flatten the row after merging, you can use S::{#example :: Record '[ "a" := Bool ]6example = project $ merge (insert #a True empty) empty:}See % for additional discussion.W large-anon.Move from the simple to the advanced interface This is an O(1) operation.X large-anon.Move from the advanced to the simple interface This is an O(1) operation.Y large-anonSequence all actionsZ large-anon!Introduce type variable for a row%This can be used in conjunction with [::{;example :: Record '[ "a" := Int, "b" := Char, "c" := Bool ](example = letRecordT $ \p -> castEqual $* letInsertAs p #c True empty $ \xs02 ->* letInsertAs p #b 'X' xs02 $ \xs01 ->* letInsertAs p #a 1 xs01 $ \xs00 -> castEqual xs00:}[ large-anonInsert field into a record and introduce type variable for the result[ large-anon&Type of the record we are constructing large-anonNew field to be inserted large-anonValue of the new field large-anonRecord constructed so far large-anon8Assign type variable to new partial record, and continue)MNOPQRSTUVWXYZ[)MNOPQRSTUVWXYZ[*:;<:=>:=?:@A:@ABC'BC'BDEBDFBDGBDGBDHBDHBDIBJKBLMBLNBLOPQRPQS#T#U#V#W#X#Y#Z#[#\#]#^&_&_(`(`(a(a(b(b(c(d*d+!9e,$fg%h.ij/klm12n346opqrstuv)wx+!9e,$fg%yz2wx{:|}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  ~  ~  ~  ~  ~  ~  ~ ~ ~  ~  ~  ~  ~  ~  ~  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  ~  ~ ~ ~  ~  ~  ~ ~ ~ ~ ~ ~  ~  ~  ~ ~ ~ ~ ~ ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~ ~ ~  ~  ~  ~  ~ ~ ~ ~  ~  ~  ~  ~ ~ ~ ~  ~  ~  ~  ~  ~  ~  ~ ~  ~  ~  ~  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~ ~ ~  ~  ~  ~ ~ ~  ~  ~  ~ ~ ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~ ~ ~ ~ ~ ~ ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~ ~ ~ ~ ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~  ~ ~ ~  ~  ~  ~  ~  ~  ~ ~ ~ ~ ~  ~  ~  ~  ~  ~  ~  ~ ~ ~ ~ ~  ~ ~ ~  ~  ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~  ~ ~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ ~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~!~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~"~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~#~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~$~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~&~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~'~~'~'~'~'~'~''~''~''~''~''~''~''~''~''~''~'~'~'~'~'~'~'~'~'~'~'~'~'~''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(''(''(''(''(''''(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(('(( ( ( ( (:((:(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ((((((((((((((((((((((((((:(((:(((((((+((!1((((((((((((((1)))()))))))))))))))))))))))))))))))))))))))))))))))))())))))4.6)))))1(!g46)h.m2l ))))+,! #)#)#>#)#)#)#)#)#)#)#)#)#)#)#)#)#)#)&t&r&v&):))($(g(f(w(x(c(,((+(!(9(%(e(h(.(3(4(6(m(2(n(/(l(s(t(q(r(u(v()(k(i(j(1(p(o*,PQ)*PQ)*w*x*)*y*z*2*+*!*9*%*g*$*f*e:():())'large-anon-0.1.1-GQb66EUuFQwJG6UFp5jJf6Data.Record.AnonData.Record.Anon.AdvancedData.Record.Anon.Simple/Data.Record.Anon.Internal.Plugin.Source.GhcShim/Data.Record.Anon.Internal.Plugin.Source.NamingT/Data.Record.Anon.Internal.Plugin.Source.Options-Data.Record.Anon.Internal.Plugin.Source.Names'Data.Record.Anon.Internal.Plugin.Source0Data.Record.Anon.Internal.Plugin.TC.EquivClasses2Data.Record.Anon.Internal.Plugin.TC.GhcTcPluginAPI(Data.Record.Anon.Internal.Core.FieldName2Data.Record.Anon.Internal.Plugin.TC.NameResolution2Data.Record.Anon.Internal.Plugin.TC.Row.KnownField.Data.Record.Anon.Internal.Plugin.TC.TyConSubst+Data.Record.Anon.Internal.Plugin.TC.Parsing9Data.Record.Anon.Internal.Plugin.TC.Constraints.KnownHash+Data.Record.Anon.Internal.Util.SmallHashMap0Data.Record.Anon.Internal.Plugin.TC.Row.KnownRow1Data.Record.Anon.Internal.Plugin.TC.Row.ParsedRow;Data.Record.Anon.Internal.Plugin.TC.Constraints.RowHasField,Data.Record.Anon.Internal.Plugin.TC.Rewriter6Data.Record.Anon.Internal.Plugin.TC.Constraints.SubRow;Data.Record.Anon.Internal.Plugin.TC.Constraints.KnownFields9Data.Record.Anon.Internal.Plugin.TC.Constraints.AllFields*Data.Record.Anon.Internal.Plugin.TC.Solver Data.Record.Anon.Internal.Plugin*Data.Record.Anon.Internal.Util.StrictArray(Data.Record.Anon.Internal.Core.Canonical#Data.Record.Anon.Internal.Core.DiffCanonsetDiffinsertData.Record.Anon.Plugin(Data.Record.Anon.Plugin.Internal.Runtimeprojectmerge$Data.Record.Anon.Internal.ReflectionDict"Data.Record.Anon.Internal.Advanced someRecord Data.Record.Anon.Internal.SimpleemptygetPreludemapMpure Data.FoldabletoList sequenceAzipzipWith Control.MonadzipWithM Data.TypeableTypeableinsertAbase GHC.TypeLits KnownSymbolData.Functor.ProductPairProduct Data.ProxyProxy'sop-core-0.5.0.2-JiJuIvMQflQ495Q0ZwTtHX Data.SOP.DictData.SOP.BasicFunctors:.:CompIKunIData.SOP.ConstraintComposeData.SOP.Classes-.->FnapFn*record-hasfield-1.0-DcbNZv0cAfk5VzIQxsym4JGHC.Records.CompathasFieldHasFieldSubRow KnownHashhashValMerge AllFieldsSimpleFieldTypes FieldTypes KnownFields RowHasFieldRow:= Reflected SomeRecordSomeInRowFieldRecord applyPendinginjectlensmapcmapcmapMcpureapcollapse sequenceA'czipWith czipWithMreifyAllFieldsreflectAllFieldsreifyKnownFieldsreflectKnownFields reifySubRow reflectSubRow letRecordT letInsertAs toAdvanced fromAdvanced importDecl Debug.TracetraceghcGHCparser lookupNameobtainTermFromIdobtainTermFromValgetHistorySpan getGHCiMonad setGHCiMonadmoduleTrustReqsisModuleTrusted lookupModule findModuleshowRichTokenStreamaddSourceToTokensgetRichTokenStreamgetTokenStreampprParenSymName dataConTypegetNameToInstancesIndexgetGREfindGlobalAnnslookupGlobalName isDictonaryIdmodInfoModBreaks modInfoSafe modInfoRdrEnv modInfoIfacemodInfoLookupNamemkPrintUnqualifiedForModulemodInfoIsExportedNamemodInfoInstancesmodInfoExportsWithSelectorsmodInfoExportsmodInfoTopLevelScopemodInfoTyThings getModuleInfogetPrintUnqualgetInsts getBindingsisLoadedgetModuleGraphcompileToCoreSimplifiedcompileToCoreModule loadModule desugarModuletypecheckModule parseModule getModSummaryworkingDirectoryChanged guessTarget removeTarget addTarget getTargets setTargetsparseDynamicFlagsgetInteractiveDynFlagssetInteractiveDynFlagsgetProgramDynFlags setLogActionsetProgramDynFlagssetSessionDynFlags initGhcMonadwithCleanupSessionrunGhcTrunGhcdefaultCleanupHandlerdefaultErrorHandler ParsedMod parsedSourceTypecheckedMod moduleInfo renamedSourcetypecheckedSource ParsedModulepm_annotationspm_extra_src_filespm_mod_summarypm_parsed_sourceTypecheckedModule tm_internals_tm_checked_module_infotm_typechecked_sourcetm_parsed_moduletm_renamed_sourceDesugaredModuledm_typechecked_moduledm_core_module ParsedSource RenamedSourceTypecheckedSource CoreModulecm_safecm_binds cm_modulecm_types ModuleInfoGhcMakecyclicModuleErrtopSortModuleGraphloaddepanal LoadHowMuchLoadDependenciesOfLoadAllTargetsLoadUpToInteractiveEvalreconstructTypemoduleIsBootOrNotObjectLinkable showModuledynCompileExprcompileParsedExprcompileParsedExprRemotecompileExprRemote compileExpr parseExprparseInstanceHeadgetInstancesForTypetypeKindexprTypegetDocsisDeclisImport hasImportisStmt parseNamegetRdrNamesInScopegetNamesInScopegetInfomoduleIsInterpreted getContext setContext abandonAllabandonforwardback resumeExecparseImportDeclrunParsedDeclsrunDeclsWithLocationrunDecls execStmt'execStmt execOptionsgetHistoryModulegetResumeContextGetDocsFailureInteractiveNameNameHasNoModule NoDocsInIfaceHscMain getHscEnv TcRnDriverrunTcInteractive TcRnExprMode TM_DefaultTM_Inst TM_NoInst PprTyThing pprFamInstGhcMonaddefaultWarnErrLoggerprintExceptiongetSessionDynFlags getSession setSessionGhcGhcT WarnErrLoggerHscTypesphaseForeignLanguageextendCompleteMatchMapmkCompleteMatchMapbyteCodeOfObject nameOfObjectisInterpretableisObject linkableObjsisObjectLinkablenumToTrustInfotrustInfoToNumnoIfaceTrustInfo setSafeMode getSafeMode isHpcUsed emptyHpcInfo showModMsg isBootSummary msObjFilePath msHiFilePath msHsFilePath ms_home_impsms_home_srcimpsms_home_allimps home_impsms_imps ms_mod_namems_installed_mod mkModuleGraphextendMGisTemplateHaskellOrQQNonBootemptyMGmgLookupModule mgElemModulemgModSummaries mgBootModulesmapMGneedsTemplateHaskellOrQQsoExt mkHsSONamemkSOName updNameCache addEpsInStatsnoDependencies lookupFixityemptyFixityEnvmkIfaceFixCache plusWarnsemptyIfaceWarnCachemkIfaceWarnCache tyThingIdtyThingConLiketyThingDataContyThingCoAxiom tyThingTyConlookupTypeHscEnv lookupType plusTypeEnvextendTypeEnvWithIdsextendTypeEnvList extendTypeEnv lookupTypeEnvtypeEnvFromEntitiesmkTypeEnvWithImplicits mkTypeEnvtypeEnvClassestypeEnvDataConstypeEnvPatSyns typeEnvIdstypeEnvCoAxioms typeEnvTyCons typeEnvElts emptyTypeEnvtyThingAvailInfotyThingsTyCoVarstyThingParent_maybeisImplicitTyThingimplicitTyConThingsimplicitClassThingsimplicitTyThingspkgQual mkQualPackage mkQualModulemkPrintUnqualifiedsubstInteractiveContexticExtendGblRdrEnvsetInteractivePrintNamesetInteractivePackageextendInteractiveContextWithIdsextendInteractiveContext icPrintUnqual icInScopeTTsicInteractiveModuleemptyInteractiveContext appendStubCimportedByUseremptyModDetailsmkIfaceHashCacheemptyFullModIfaceemptyPartialModIfacerenameFreeHoles mi_free_holesmi_semantic_modulemi_fixmi_bootprepareAnnotations metaRequestAW metaRequestD metaRequestT metaRequestP metaRequestEhptRules hptInstanceshptCompleteSigslookupIfaceByModulelookupHptByModule listToHpt addListToHptaddToHpt delFromHptmapHptallHpt filterHpteltsHptlookupHptDirectly lookupHptpprHPTemptyPackageIfaceTableemptyHomePackageTable pprTargetId pprTargethscEPShandleFlagWarningsprintOrThrowWarningshandleSourceError throwOneError throwErrorsmkApiErrsrcErrorMessagesmkSrcErrrunInteractiveHscmkInteractiveHscEnvrunHsc HscStatus HscRecomp HscUpdateSig HscUpdateBootHscNotGeneratingCode HscUpToDatehscs_iface_dflagshscs_old_iface_hashhscs_partial_iface hscs_gutshscs_mod_locationHsc SourceError GhcApiErrorHscEnv hsc_dynLinker hsc_iservhsc_type_env_varhsc_FChsc_NChsc_EPShsc_HPThsc_IC hsc_mod_graph hsc_dflags hsc_targetsIServiservPendingFreesiservLookupSymbolCache iservPipe iservProcessTargettargetContentstargetIdtargetAllowObjCodeTargetId TargetModule TargetFileInputFileBufferHomePackageTablePackageIfaceTable HomeModInfo hm_linkablehm_iface hm_details MetaRequestMetaAWMetaDMetaTMetaEMetaP MetaResultMetaHook FinderCacheInstalledFindResultInstalledNotFoundInstalledFoundInstalledNoPackage FindResultNotFound FoundMultipleFound NoPackagefr_suggestions fr_unusablesfr_pkgs_hiddenfr_mods_hiddenfr_pathsfr_pkgPartialModIfaceModIfaceModIfaceBackend mi_hash_fn mi_fix_fn mi_warn_fnmi_orphan_hash mi_exp_hash mi_finsts mi_orphanmi_plugin_hash mi_hpc_hash mi_opt_hash mi_flag_hash mi_iface_hash mi_mod_hash ModIface_ mi_final_exts mi_arg_docs mi_decl_docs mi_doc_hdrmi_complete_sigs mi_trust_pkgmi_trustmi_hpcmi_rules mi_fam_instsmi_insts mi_globalsmi_declsmi_annsmi_warns mi_fixities mi_used_th mi_exports mi_usagesmi_deps mi_hsc_src mi_module mi_sig_of IfaceExport ModDetailsmd_complete_sigsmd_annsmd_rules md_fam_instsmd_insts md_exportsmd_types ImportedMods ImportedByImportedByUserImportedBySystemImportedModsVal imv_qualifiedimv_all_exports imv_is_hiding imv_is_safeimv_nameimv_spanModGuts mg_arg_docs mg_decl_docs mg_doc_hdr mg_trust_pkgmg_safe_haskellmg_fam_inst_env mg_inst_env mg_modBreaks mg_hpc_infomg_complete_sigsmg_annsmg_warnsmg_foreign_files mg_foreignmg_bindsmg_rules mg_patsyns mg_fam_instsmg_instsmg_tcs mg_fix_env mg_rdr_env mg_used_th mg_usagesmg_deps mg_exportsmg_loc mg_module mg_hsc_srcCgGutscg_spt_entries cg_modBreaks cg_hpc_info cg_dep_pkgscg_foreign_files cg_foreigncg_binds cg_module cg_tycons ForeignStubsNoStubsInteractiveContextic_cwd ic_int_printic_monad ic_resume ic_default ic_fix_env ic_instances ic_rn_gbl_env ic_tythings ic_imports ic_dflags ic_mod_indexInteractiveImportIIDeclIIModuleTypeEnv MonadThings lookupTyCon lookupDataCon lookupThinglookupIdWarningsWarnSome NoWarningsWarnAll FixityEnvFixItemWhetherHasOrphansIsBootInterface DependenciesDeps dep_plgins dep_finsts dep_orphsdep_modsdep_pkgsUsageUsageMergedRequirement UsageFileUsagePackageModuleUsageHomeModule usg_file_hash usg_file_path usg_exports usg_entities usg_mod_nameusg_safeusg_mod usg_mod_hashPackageTypeEnvPackageRuleBasePackageInstEnvPackageFamInstEnvPackageCompleteMatchMapExternalPackageStateEPS eps_statseps_mod_fam_inst_enveps_complete_matches eps_ann_env eps_rule_baseeps_fam_inst_env eps_inst_enveps_PTEeps_free_holes eps_is_booteps_PITEpsStats n_insts_out n_insts_in n_rules_out n_rules_in n_decls_out n_ifaces_in n_decls_in ModuleGraph ModSummary ms_hspp_buf ms_hspp_opts ms_hspp_file ms_parsed_modms_textual_imps ms_srcimps ms_hie_date ms_iface_date ms_obj_date ms_hs_date ms_locationms_mod ms_hsc_srcSourceModifiedSourceUnmodifiedAndStableSourceUnmodifiedHpcInfo NoHpcInfohpcUsedhpcInfoTickCount hpcInfoHash AnyHpcUsage IsSafeImportIfaceTrustInfoHsParsedModulehpm_annotations hpm_module hpm_src_files CompleteMatchcompleteMatchConLikescompleteMatchTyConCompleteMatchMapGHC.HsHsModulehsmodHaddockModHeaderhsmodDeprecMessage hsmodDecls hsmodImports hsmodName hsmodExports GHC.Hs.Utils lPatImplicitshsValBindsImplicitslStmtsImplicitshsDataFamInstBindersgetPatSynBindshsPatSynSelectorshsForeignDeclsBindershsLTyClDeclBindershsTyClForeignBindershsGroupBinderscollectPatsBinderscollectPatBinderscollectStmtBinderscollectLStmtBinderscollectStmtsBinderscollectLStmtsBinderscollectMethodBinderscollectHsBindListBinderscollectHsBindsBinderscollectHsBindBinderscollectHsValBinderscollectHsIdBinderscollectLocalBindersisBangedHsBindisUnliftedHsBindmkMatchmkPrefixFunRhsmkSimpleGeneratedFunBindisInfixFunBind mkPatSynBind mkVarBind mkHsVarBind mkTopFunBind mkFunBind mkHsDictLet mkHsWrapPatCo mkHsWrapPat mkLHsCmdWrap mkHsCmdWrap mkLHsWrapCo mkHsWrapCoR mkHsWrapComkHsWrap mkLHsWrap typeToLHsType mkClassOpSigs mkHsSigEnvmkLHsSigWcType mkLHsSigTypechunkify mkChunkifiedmkBigLHsPatTupmkBigLHsVarPatTup mkBigLHsTupmkBigLHsVarTup missingTupArg nlTuplePat mkLHsVarTuplemkLHsTupleExpr nlHsAppKindTy nlHsTyConApp nlHsParTy nlHsFunTy nlHsTyVar nlHsAppTynlListnlHsCasenlHsIfnlHsParnlHsLam nlHsOpAppnlHsDo nlWildPatName nlWildPat nlWildConPatnlNullaryConPat nlConPatNamenlConPat nlInfixConPatnlConVarPatName nlConVarPat nlHsVarAppsnlHsAppsnlHsSyntaxAppsnlHsAppnlLitPatnlVarPat nlHsIntLitnlHsLit nlHsDataConnlHsVarmkHsStringPrimLit mkHsStringunqualQuasiQuotemkHsQuasiQuote mkTypedSplicemkUntypedSplice mkHsOpApp mkRecStmtemptyRecStmtIdemptyRecStmtName emptyRecStmt unitRecStmtTc mkTcBindStmt mkBindStmt mkBodyStmt mkLastStmtmkGroupByUsingStmtmkGroupUsingStmtmkTransformByStmtmkTransformStmtemptyTransStmt mkNPlusKPatmkNPat mkHsCmdIfmkHsIfmkHsCompmkHsDo mkHsIsStringmkHsFractional mkHsIntegralnlParPatmkParPatmkLHsPar nlHsTyApps nlHsTyApp mkHsCaseAltmkHsLamsmkHsLam mkHsAppTypes mkHsAppTypemkHsApp mkMatchGroup unguardedRHSunguardedGRHSs mkSimpleMatchmkHsPar GHC.Hs.Expr pprStmtInCtxtpprMatchInCtxtmatchContextErrStringpprStmtContextpprAStmtContextpprMatchContextNounpprMatchContextmatchSeparatorisMonadCompContextisMonadFailStmtContextisComprehensionContext isPatSynCtxt pp_dotdot thTyBrackets thBrackets pprHsBracketisTypedBracket ppr_splice ppr_quasippr_splice_declpprPendingSplice isTypedSplicepprQualspprComp ppr_do_stmtspprDopprBy pprTransStmtpprTransformStmtpprArgpprStmtpp_rhspprGRHSpprGRHSspprMatch pprMatches hsLMatchPatsmatchGroupArityisSingletonMatchGroupisEmptyMatchGroup isInfixMatch pprCmdArgppr_cmdppr_lcmd isQuietHsCmdpprCmdpprLCmdisAtomicHsExprparenthesizeHsExprhsExprNeedsParens pprParendExprpprParendLExprpprDebugParendExprpprExternalSrcLocppr_appsppr_infix_exprppr_expr ppr_lexprpprBinds isQuietHsExpr tupArgPresent unboundVarOccmkRnSyntaxExpr mkSyntaxExpr noSyntaxExprnoExpr PostTcExpr PostTcTableCmdSyntaxTable UnboundVar OutOfScope TrueExprHole RecordConTc rcon_con_like rcon_con_expr RecordUpdTc rupd_wrap rupd_out_tys rupd_cons rupd_in_tys LHsTupArgHsTupArgXTupArgPresentMissingLHsCmd HsArrAppTypeHsHigherOrderAppHsFirstOrderApp LHsCmdTopHsCmdTopXCmdTopCmdTopTc HsRecordBinds MatchGroupTc mg_arg_tys mg_res_tyLMatchMatchXMatchm_grhssm_patsm_extm_ctxtLGRHSGRHSXGRHSLStmtLStmtLRStmtCmdLStmtCmdStmt ExprLStmtExprStmt GuardLStmt GuardStmt GhciLStmtGhciStmtStmtLRXStmtLRRecStmt TransStmtParStmtLetStmtBodyStmtApplicativeStmtLastStmtBindStmt recS_mfix_fn recS_ret_fn recS_bind_fn recS_rec_idsrecS_later_ids recS_stmtsrecS_exttrS_fmaptrS_bindtrS_rettrS_by trS_using trS_bndrs trS_stmtstrS_exttrS_form RecStmtTc recS_ret_ty recS_rec_rets recS_bind_tyrecS_later_rets TransFormThenForm GroupForm ParStmtBlock XParStmtBlockApplicativeArgXApplicativeArgApplicativeArgOneApplicativeArgMany bv_pattern final_expr app_stmtsxarg_app_arg_many fail_operator is_body_stmtarg_exprxarg_app_arg_oneapp_arg_patternSpliceDecorationNoParens HasParens HasDollarThModFinalizers DelayedSpliceHsSplicedThing HsSplicedPat HsSplicedExpr HsSplicedTySplicePointNamePendingRnSpliceUntypedSpliceFlavourUntypedDeclSpliceUntypedTypeSpliceUntypedExpSpliceUntypedPatSplicePendingTcSplice HsBracketTExpBrVarBrTypBrDecBrGDecBrLPatBrXBracketExpBr ArithSeqInfo FromThenToFromToFromFromThenHsMatchContext ThPatQuote ThPatSpliceStmtCtxtRecUpd PatBindGuards PatBindRhsProcExprIfAltCaseAlt LambdaExprPatSynFunRhs mc_strictnessmc_fun mc_fixity HsStmtContext TransStmtCtxt ParStmtCtxtPatGuard GhciStmtCtxt ArrowExprMDoExprDoExprListComp MonadComp GHC.Hs.DeclsroleAnnotDeclNameannProvenanceName_maybe docDeclDocpprFullRuleNamecollectRuleBndrSigTysflattenRuleDeclsmapDerivStrategyfoldDerivStrategyderivStrategyNameinstDeclDataFamInstspprHsFamInstLHSpprDataFamInstFlavourpprTyFamInstDeclhsConDeclThetahsConDeclArgTys getConArgs getConNamesnewOrDataToFlavourstandaloneKindSigNameresultVariableNamefamResultKindSignaturefamilyDeclNamefamilyDeclLNametyClGroupKindSigstyClGroupRoleDeclstyClGroupInstDeclstyClGroupTyClDeclspprTyClDeclFlavour hsDeclHasCuskcountTyClDeclstyClDeclTyVarstcdName tyClDeclLNametyFamInstDeclLNametyFamInstDeclNameisDataFamilyDeclisClosedTypeFamilyInfoisOpenTypeFamilyInfoisTypeFamilyDecl isFamilyDecl isClassDecl isSynDecl isDataDecl appendGroupshsGroupInstDecls emptyRnGroup emptyRdrGroupLHsDeclHsDeclXHsDecl RoleAnnotDDocDSpliceDRuleDAnnDWarningDForDDefDKindSigDSigDValDDerivDTyClDInstDHsGroupXHsGrouphs_docs hs_ruledshs_annds hs_warndshs_fordshs_defdshs_fixds hs_derivds hs_tyclds hs_splcdshs_exths_valds LSpliceDecl SpliceDecl XSpliceDecl LTyClDeclTyClDecl XTyClDecl ClassDeclDataDeclFamDeclSynDecltcdDocs tcdATDefstcdATstcdMethstcdSigstcdFDstcdCtxttcdCExt tcdDataDefntcdDExttcdRhs tcdFixity tcdTyVarstcdLNametcdSExttcdFExttcdFam LHsFunDep DataDeclRn tcdDataCusktcdFVs TyClGroup XTyClGroup group_instds group_kisigs group_roles group_ext group_tycldsLFamilyResultSigFamilyResultSigXFamilyResultSigTyVarSigNoSigKindSig LFamilyDecl FamilyDecl XFamilyDeclfdInjectivityAnn fdResultSigfdFixityfdTyVarsfdLNamefdExtfdInfoLInjectivityAnnInjectivityAnn FamilyInfoClosedTypeFamily DataFamilyOpenTypeFamily HsDataDefn XHsDataDefn dd_derivsdd_cons dd_kindSigdd_cTypedd_ctxtdd_extdd_ND HsDerivingLHsDerivingClauseHsDerivingClauseXHsDerivingClausederiv_clause_tysderiv_clause_extderiv_clause_strategyLStandaloneKindSigStandaloneKindSigXStandaloneKindSig NewOrDataDataTypeNewTypeLConDeclConDeclXConDecl ConDeclGADT ConDeclH98 con_ex_tvscon_namecon_extcon_doc con_res_tycon_args con_mb_cxt con_qvars con_forall con_g_ext con_namesHsConDeclDetails LTyFamInstEqnHsTyPats TyFamInstEqnTyFamDefltDeclLTyFamDefltDeclLTyFamInstDecl TyFamInstDecltfid_eqnLDataFamInstDeclDataFamInstDecldfid_eqn LFamInstEqn FamInstEqnFamEqnXFamEqnfeqn_rhs feqn_fixity feqn_pats feqn_bndrsfeqn_ext feqn_tycon LClsInstDecl ClsInstDecl XClsInstDeclcid_overlap_modecid_datafam_instscid_tyfam_instscid_sigs cid_bindscid_ext cid_poly_ty LInstDeclInstDecl XInstDecl TyFamInstDClsInstD DataFamInstD tfid_insttfid_ext dfid_instdfid_ext cid_d_extcid_inst LDerivDecl DerivDecl XDerivDeclderiv_overlap_modederiv_strategy deriv_ext deriv_typeLDerivStrategy DerivStrategy ViaStrategyNewtypeStrategy StockStrategyAnyclassStrategy LDefaultDecl DefaultDecl XDefaultDecl LForeignDecl ForeignDecl XForeignDecl ForeignExport ForeignImportfd_fefd_e_extfd_fi fd_sig_tyfd_i_extfd_nameCImport CImportSpecCWrapperCLabel CFunctionCExport LRuleDecls RuleDeclsHsRules XRuleDecls rds_rulesrds_extrds_src LRuleDeclRuleDeclHsRule XRuleDeclrd_rhsrd_lhsrd_tmvsrd_tyvsrd_actrd_extrd_nameHsRuleRn LRuleBndrRuleBndr XRuleBndr RuleBndrSigLDocDeclDocDeclDocGroupDocCommentNamedDocCommentNextDocCommentPrev LWarnDecls WarnDecls XWarnDecls wd_warningswd_extwd_src LWarnDeclWarnDeclWarning XWarnDeclLAnnDeclAnnDecl HsAnnotationXAnnDecl AnnProvenanceModuleAnnProvenanceValueAnnProvenanceTypeAnnProvenanceLRoleAnnotDecl RoleAnnotDeclXRoleAnnotDecl GHC.Hs.PatcollectEvVarsPatcollectEvVarsPatsparenthesizePatpatNeedsParensisIrrefutableHsPatlooksLazyPatBind isBangedLPat mkCharLitPatmkNilPatmkPrefixConPat pprConArgs pprParendLPathsRecUpdFieldOcchsRecUpdFieldIdhsRecUpdFieldRdr hsRecFieldId hsRecFieldSelhsRecFieldsArgs hsRecFields hsConPatArgsInPatOutPat ListPatTcHsConPatDetails HsRecFieldsrec_flds rec_dotdot LHsRecField' LHsRecFieldLHsRecUpdField HsRecField HsRecUpdField HsRecField'hsRecPun hsRecFieldLbl hsRecFieldArg GHC.Hs.Binds pprMinimalSigpprTcSpecPragspprSpec pprVarSigpragSrcBrackets pragBracketsppr_sighsSigDocisCompleteMatchSig isSCCFunSig isMinimalLSig isInlineLSig isPragLSigisSpecInstLSig isSpecLSig isTypeLSig isFixityLSigisDefaultMethod hasSpecPrags noSpecPragsisEmptyIPBindsTcisEmptyIPBindsPRpprTicks ppr_monobindplusHsValBindsisEmptyLHsBinds emptyLHsBindsemptyValBindsOutemptyValBindsInisEmptyValBindseqEmptyLocalBindsisEmptyLocalBindsPRisEmptyLocalBindsTcemptyLocalBinds pprDeclListpprLHsBindsForUser pprLHsBinds HsLocalBinds LHsLocalBindsHsLocalBindsLRXHsLocalBindsLREmptyLocalBinds HsIPBinds HsValBindsLHsLocalBindsLR HsValBindsLRValBinds XValBindsLR NHsValBindsLR NValBindsLHsBindLHsBindsHsBind LHsBindsLR LHsBindLRHsBindLR XHsBindsLRAbsBindsVarBindPatBind PatSynBindFunBindabs_sig abs_binds abs_ev_binds abs_exports abs_ev_varsabs_tvsabs_ext var_inlinevar_rhsvar_idvar_ext pat_tickspat_rhspat_lhspat_extfun_tick fun_co_fn fun_matchesfun_extfun_id NPatBindTcpat_fvs pat_rhs_tyABExportABE XABExport abe_pragsabe_wrapabe_monoabe_extabe_poly XPatSynBindPSBpsb_dirpsb_defpsb_argspsb_extpsb_id XHsIPBindsIPBindsLIPBindIPBindXIPBindLSigSigXSigCompleteMatchSig SCCFunSig MinimalSig SpecInstSigSpecSig InlineSigFixSigIdSig ClassOpSigTypeSig PatSynSig LFixitySig FixitySig XFixitySig TcSpecPragsIsDefaultMethod SpecPrags LTcSpecPrag TcSpecPragSpecPragHsPatSynDetailsRecordPatSynFieldrecordPatSynSelectorIdrecordPatSynPatVar HsPatSynDirExplicitBidirectionalUnidirectionalImplicitBidirectionalInstEnvpprInstanceHdr pprInstanceinstanceDFunIdClsInst FamInstEnvFamInst LinkerTypesLinkableLMlinkableUnlinked linkableTimelinkableModuleUnlinkedBCOsDotDLLDotODotASptEntry ByteCodeTypesemptyModBreaksCompiledByteCode BreakIndex ModBreaksmodBreaks_breakInfo modBreaks_ccsmodBreaks_declsmodBreaks_varsmodBreaks_flagsmodBreaks_locs GHC.Hs.TypesparenthesizeHsContextparenthesizeHsTypehsTypeNeedsParens pprHsTypepprConDeclFields pprLHsContextpprHsExplicitForAllpprHsForAllExtra pprHsForAllpprAnonWildCardambiguousFieldOccunambiguousFieldOccselectorAmbiguousFieldOccrdrNameAmbiguousFieldOccmkAmbiguousFieldOcc mkFieldOccgetLHsInstDeclClass_maybegetLHsInstDeclHeadsplitLHsInstDeclTysplitLHsQualTysplitLHsForAllTyInvissplitLHsSigmaTyInvissplitLHsPatSynTynumVisibleArgshsTyGetAppHead_maybesplitHsFunType mkHsAppKindTy mkHsAppTys mkHsAppTymkHsOpTymkAnonWildCardTy isLHsForAllTy ignoreParens hsTyKindSighsLTyVarBndrsToTypeshsLTyVarBndrToTypehsLTyVarLocNameshsLTyVarLocNamehsAllLTyVarNameshsExplicitLTyVarNames hsLTyVarNames hsLTyVarName hsTyVarName hsScopedTvs hsWcScopedTvshsConDetailsArgshsTvbAllKindedisHsKindedTyVar hsIPNameFSmkEmptyWildCardBndrsmkEmptyImplicitBndrsmkHsWildCardBndrsmkHsImplicitBndrs dropWildCards hsSigWcType hsSigTypehsImplicitBodyisEmptyLHsQTvs emptyLHsQTvs hsQTvExplicitmkHsQTvs noLHsContextgetBangStrictness getBangType LBangTypeBangType LHsContext HsContextLHsTypeHsKindLHsKind LHsTyVarBndr LHsQTyVarsHsQTvs XLHsQTyVarshsq_ext hsq_explicitHsImplicitBndrsHsIBXHsImplicitBndrshsib_ext hsib_bodyHsWildCardBndrsHsWCXHsWildCardBndrshswc_ext hswc_body LHsSigType LHsWcType LHsSigWcTypeHsIPName HsTyVarBndr XTyVarBndr UserTyVar KindedTyVarHsTypeXHsType HsWildCardTyHsExplicitTupleTyHsExplicitListTyHsRecTyHsBangTyHsDocTy HsSpliceTy HsKindSigHsStarTy HsIParamTyHsParTyHsOpTyHsSumTy HsTupleTyHsListTyHsFunTy HsAppKindTyHsAppTyHsTyVarHsQualTyHsTyLit HsForAllTyhst_ctxt hst_xqualhst_body hst_bndrs hst_xforallhst_fvf NewHsTypeX NHsCoreTyHsNumTyHsStrTy HsTupleSortHsBoxedOrConstraintTupleHsConstraintTupleHsUnboxedTuple HsBoxedTuple LConDeclField ConDeclField XConDeclField cd_fld_doc cd_fld_type cd_fld_ext cd_fld_names HsConDetailsInfixCon PrefixConRecConHsArgHsArgParHsValArg HsTypeArg LHsTypeArg LFieldOccFieldOcc XFieldOcc extFieldOccrdrNameFieldOccAmbiguousFieldOccXAmbiguousFieldOcc Unambiguous AmbiguousInteractiveEvalTypes ExecOptionsexecWrapexecLineNumberexecSingleStepexecSourceFile SingleStepRunAndLogStepsRunToCompletion ExecResult ExecComplete ExecBreak breakInfo breakNames execResultexecAllocation BreakInfobreakInfo_modulebreakInfo_numberResumeresumeHistoryIx resumeHistory resumeCCS resumeDecl resumeSpanresumeBreakInfo resumeApStackresumeFinalIdsresumeBindings resumeStmt resumeContextHistoryhistoryBreakInfohistoryEnclosingDecls NameCachensUniqsId isBottomingId isDeadBinder isImplicitId idDataConisDataConWorkId isFCallId isPrimOpIdisClassOpId_maybeisRecordSelectorrecordSelectorTyConidTypeDataConisVanillaDataCondataConUserType dataConSigdataConSrcBangsdataConIsInfixisMarkedStrict HsSrcBang HsImplBangHsUnpackHsLazyHsStrict SrcStrictness NoSrcStrictSrcLazy SrcStrictSrcUnpackedness NoSrcUnpack SrcUnpack SrcNoUnpackStrictnessMark MarkedStrictNotMarkedStrict GHC.Hs.LithsOverLitNeedsParenshsLitNeedsParens pmPprHsLit pp_st_suffix convertLit overLitTypenegateOverLitValHsLitXLit HsDoublePrim HsFloatPrimHsRat HsInteger HsWord64Prim HsInt64Prim HsWordPrim HsIntPrimHsInt HsStringPrimHsStringHsChar HsCharPrim HsOverLitXOverLitOverLit ol_witnessol_extol_val OverLitTc ol_rebindableol_type OverLitVal HsIsString HsIntegral HsFractionalTypesplitForAllTys funResultTyTyCoPpr pprTypeApp pprForAllpprThetaArrowTy pprParendTypeTysPrim alphaTyVarsTyContyConClass_maybe isClassTyConsynTyConRhs_maybesynTyConDefn_maybe tyConDataConsisOpenTypeFamilyTyConisTypeFamilyTyConisOpenFamilyTyCon isFamilyTyConisTypeSynonymTyCon isNewTyCon isPrimTyConClass pprFundeps classTvsFds classSCThetaclassATs classMethods dataConTyCondataConFieldLabelspprLExprpprExpr pprSplice pprSpliceDecl pprPatBind pprFunBindHsExprXExprHsWrap HsTickPragma HsBinTickHsTickHsStaticHsProc HsSpliceEHsTcBracketOutHsRnBracketOut HsCoreAnnHsSCCArithSeq ExprWithTySig RecordUpd RecordCon ExplicitListHsDoHsLet HsMultiIfHsIfHsCase ExplicitSum ExplicitTupleSectionRSectionLHsParNegAppOpApp HsAppTypeHsApp HsLamCaseHsLamHsIPVar HsOverLabelHsRecFld HsConLikeOut HsUnboundVarHsVar rupd_flds rupd_exprrupd_ext rcon_fldsrcon_ext rcon_con_nameHsCmdXCmd HsCmdWrapHsCmdDoHsCmdLetHsCmdIf HsCmdCaseHsCmdParHsCmdLamHsCmdApp HsCmdArrApp HsCmdArrFormHsSpliceXSplice HsSplicedT HsSpliced HsQuasiQuote HsTypedSpliceHsUntypedSplice MatchGroupMG XMatchGroup mg_originmg_extmg_altsGRHSsXGRHSsgrhssLocalBindsgrhssExt grhssGRHSs SyntaxExpr syn_res_wrapsyn_expr syn_arg_wrapsLHsExpr GHC.Hs.ImpExp pprImpExpreplaceLWrappedNamereplaceWrappedNameieLWrappedNamelieWrappedName ieWrappedNameieNamesieNamesimpleImportDeclisImportDeclQualifiedimportDeclQualifiedStyle LImportDeclImportDeclQualifiedStyle NotQualified QualifiedPre QualifiedPost ImportDecl XImportDecl ideclHidingideclAs ideclImplicitideclQualified ideclSafe ideclSource ideclPkgQual ideclNameideclExtideclSourceSrc IEWrappedNameIETypeIEName IEPatternLIEWrappedNameLIEIEXIE IEDocNamedIEDocIEGroupIEModuleContents IEThingWith IEThingAllIEVar IEThingAbs IEWildcard NoIEWildcardPatXPatCoPatSigPat NPlusKPatNPatLitPat SplicePatViewPat ConPatOutConPatInSumPatTuplePatListPatBangPatParPatAsPatLazyPatWildPatVarPatpat_wrappat_args pat_binds pat_dictspat_tvspat_con pat_arg_tysLPatGHC.Hs.ExtensionnoExtCon noExtField NoExtFieldNoExtConGhcPassPass TypecheckedParsedRenamedGhcPsGhcRnGhcTcGhcTcIdXRecIdPLIdPNoGhcTc NoGhcTcPass XHsValBindsXEmptyLocalBindsXXHsLocalBindsLRForallXHsLocalBindsLR XValBinds XXValBindsLRForallXValBindsLRXFunBindXPatBindXVarBind XAbsBinds XXHsBindsLRForallXHsBindsLRXABE XXABExportForallXABExportXPSB XXPatSynBindForallXPatSynBindXIPBinds XXHsIPBindsForallXHsIPBindsXCIPBindXXIPBind ForallXIPBindXTypeSig XPatSynSig XClassOpSigXIdSigXFixSig XInlineSigXSpecSig XSpecInstSig XMinimalSig XSCCFunSigXCompleteMatchSigXXSig ForallXSig XXFixitySigForallXFixitySigXXStandaloneKindSigXTyClDXInstDXDerivDXValDXSigD XKindSigDXDefDXForD XWarningDXAnnDXRuleDXSpliceDXDocD XRoleAnnotDXXHsDecl ForallXHsDecl XCHsGroup XXHsGroupForallXHsGroup XXSpliceDeclForallXSpliceDeclXFamDeclXSynDecl XDataDecl XClassDecl XXTyClDeclForallXTyClDecl XCTyClGroup XXTyClGroupForallXTyClGroupXNoSig XCKindSig XTyVarSigXXFamilyResultSigForallXFamilyResultSig XCFamilyDecl XXFamilyDeclForallXFamilyDecl XCHsDataDefn XXHsDataDefnForallXHsDataDefnXCHsDerivingClauseXXHsDerivingClauseForallXHsDerivingClause XConDeclGADT XConDeclH98 XXConDeclForallXConDeclXCFamEqnXXFamEqn ForallXFamEqn XCClsInstDecl XXClsInstDeclForallXClsInstDecl XClsInstD XDataFamInstD XTyFamInstD XXInstDeclForallXInstDecl XCDerivDecl XXDerivDeclForallXDerivDecl XViaStrategy XCDefaultDecl XXDefaultDeclForallXDefaultDeclXForeignImportXForeignExport XXForeignDeclForallXForeignDecl XCRuleDecls XXRuleDeclsForallXRuleDeclsXHsRule XXRuleDeclForallXRuleDecl XCRuleBndr XRuleBndrSig XXRuleBndrForallXRuleBndr XWarnings XXWarnDeclsForallXWarnDeclsXWarning XXWarnDeclForallXWarnDecl XHsAnnotation XXAnnDeclForallXAnnDeclXCRoleAnnotDeclXXRoleAnnotDeclForallXRoleAnnotDeclXVar XUnboundVar XConLikeOutXRecFld XOverLabelXIPVar XOverLitEXLitEXLamXLamCaseXApp XAppTypeEXOpAppXNegAppXPar XSectionL XSectionRXExplicitTuple XExplicitSumXCaseXIfXMultiIfXLetXDo XExplicitList XRecordCon XRecordUpdXExprWithTySig XArithSeqXSCCXCoreAnn XRnBracketOut XTcBracketOutXSpliceEXProcXStaticXTickXBinTick XTickPragmaXWrapXXExpr ForallXExpr XUnambiguous XAmbiguousXXAmbiguousFieldOccForallXAmbiguousFieldOccXPresentXMissingXXTupArg ForallXTupArg XTypedSpliceXUntypedSplice XQuasiQuoteXSplicedXXSplice ForallXSpliceXExpBrXPatBrXDecBrLXDecBrGXTypBrXVarBrXTExpBr XXBracketForallXBracketXXCmdTop ForallXCmdTopXMG XXMatchGroupForallXMatchGroupXCMatchXXMatch ForallXMatchXCGRHSsXXGRHSs ForallXGRHSsXCGRHSXXGRHS ForallXGRHS XLastStmt XBindStmtXApplicativeStmt XBodyStmtXLetStmtXParStmt XTransStmtXRecStmtXXStmtLR ForallXStmtLR XCmdArrApp XCmdArrFormXCmdAppXCmdLamXCmdParXCmdCaseXCmdIfXCmdLetXCmdDoXCmdWrapXXCmd ForallXCmdXXParStmtBlockForallXParStmtBlockXApplicativeArgOneXApplicativeArgManyXXApplicativeArgForallXApplicativeArgXHsChar XHsCharPrim XHsString XHsStringPrimXHsInt XHsIntPrim XHsWordPrim XHsInt64Prim XHsWord64Prim XHsIntegerXHsRat XHsFloatPrim XHsDoublePrimXXLit ForallXHsLit XXOverLitForallXOverLitXWildPatXVarPatXLazyPatXAsPatXParPatXBangPatXListPat XTuplePatXSumPatXConPatXViewPat XSplicePatXLitPatXNPat XNPlusKPatXSigPatXCoPatXXPat ForallXPatXHsQTvs XXLHsQTyVarsForallXLHsQTyVarsXHsIBXXHsImplicitBndrsForallXHsImplicitBndrsXHsWCXXHsWildCardBndrsForallXHsWildCardBndrs XForAllTyXQualTyXTyVarXAppTy XAppKindTyXFunTyXListTyXTupleTyXSumTyXOpTyXParTy XIParamTyXStarTyXKindSig XSpliceTyXDocTyXBangTyXRecTyXExplicitListTyXExplicitTupleTyXTyLit XWildCardTyXXType ForallXType XUserTyVar XKindedTyVar XXTyVarBndrForallXTyVarBndrXXConDeclFieldForallXConDeclField XCFieldOcc XXFieldOccForallXFieldOcc XCImportDecl XXImportDeclForallXImportDeclXIEVar XIEThingAbs XIEThingAll XIEThingWithXIEModuleContentsXIEGroupXIEDoc XIEDocNamedXXIE ForallXIE Convertableconvert ConvertIdX OutputableXOutputableBndrIdGHC.Hs.PlaceHolderplaceHolderNamesTc NameOrRdrNameVar isExportedId isGlobalId isLocalIdTyVar ForallVisFlag ForallVis ForallInvisLexerToken ApiAnnotation unicodeAnngetAndRemoveAnnotationCommentsgetAnnotationCommentsgetAndRemoveAnnotation getAnnotationApiAnns AnnKeywordId AnnEofPosAnnRarrowtailUAnnLarrowtailUAnnrarrowtailUAnnlarrowtailUAnnVia AnnValStr AnnThTyQuoteAnnThIdTySplice AnnThIdSplice AnnSignatureAnnSimpleQuote AnnRarrowUAnnOpenS AnnOpenPTE AnnOpenPE AnnOpenEQUAnnOpenC AnnOpenBUAnnNameAnnMdo AnnLarrowU AnnForallU AnnDcolonU AnnDarrowU AnnCommaTuple AnnCloseS AnnCloseQU AnnCloseC AnnCloseBU AnnAnyclassAnnColon AnnStaticAnnProc AnnCloseQ AnnOpenEQAnnOpenEAnnMinusAnnDoAnnInAnnElseAnnIfAnnOfAnnCaseAnnLam AnnCloseBAnnOpenB AnnRarrowtail AnnLarrowtail Annrarrowtail AnnlarrowtailAnnRecAnnLetAnnUsingAnnGroupAnnByAnnThenAnnClass AnnClosePAnnOpenP AnnFamilyAnnData AnnNewtypeAnnStock AnnDeriving AnnExport AnnForeignAnnRoleAnnAtAnnFunIdAnnWhere AnnLarrowAnnEqualAnnVbar AnnInstanceAnnInfix AnnDefaultAnnUnitAnnBang AnnRarrow AnnDarrowAnnDot AnnForall AnnDcolonAnnSemi AnnHidingAnnAsAnnPackageName AnnQualifiedAnnSafe AnnImport AnnModuleAnnComma AnnDotdot AnnPatternAnnTilde AnnBackquoteAnnTypeAnnVal AnnHeaderAnnOpenAnnCloseAnnotationCommentAnnBlockCommentAnnLineComment AnnDocOptions AnnDocSectionAnnDocCommentNamedAnnDocCommentNextAnnDocCommentPrevRdrName mkRdrQual mkRdrUnqual rdrNameOccExactUnqualQual GHC.Hs.DocemptyArgDocMapemptyDeclDocMap concatDocs appendDocs ppr_mbDochsDocStringToByteString unpackHDSmkHsDocStringUtf8ByteString mkHsDocString HsDocString LHsDocString DeclDocMap ArgDocMapNamepprModulePrefixmkInternalName nameModuleisExternalName nameSrcSpan NamedThing getOccNamegetNameTyCoRepTyThingACoAxiomATyConAnIdAConLikePredTypeKind ThetaTypeErrUtilsprettyPrintGhcErrorsOccName tidyOccNameavoidClashesOccEnvinitTidyOccEnvemptyTidyOccEnv mkMethodOcc mkDataCOcc mkDataTOcc mkDFunOcc mkInstTyTcOcc mkLocalOccmkSuperDictSelOccmkSuperDictAuxOccmkDataConWorkerOccmkRecFldSelOccmkGen1RmkGenR mkTyConRepOcc mkMaxTagOcc mkTag2ConOcc mkCon2TagOcc mkEqPredCoOcc mkInstTyCoOcc mkNewTyCoOccmkClassDataConOcc mkRepEqOccmkForeignExportOcc mkSpecOccmkIPOcc mkDictOccmkClassOpAuxOccmkDefaultMethodOcc mkBuilderOcc mkMatcherOcc mkWorkerOccmkDataConWrapperOccisTypeableBindOccisDefaultMethodOccisDerivedOccNamestartsWithUnderscore parenSymOccisSymOcc isDataSymOcc isDataOccisValOccisTcOccisTvOccisVarOccsetOccNameSpace occNameString filterOccSetintersectsOccSetintersectOccSet isEmptyOccSet elemOccSet minusOccSetunionManyOccSets unionOccSetsextendOccSetList extendOccSetmkOccSet unitOccSet emptyOccSet pprOccEnv alterOccEnv filterOccEnvdelListFromOccEnv delFromOccEnv mkOccEnv_C mapOccEnvextendOccEnv_AccextendOccEnv_C plusOccEnv_C plusOccEnv occEnvElts foldOccEnv elemOccEnvmkOccEnv lookupOccEnvextendOccEnvList extendOccEnv unitOccEnv emptyOccEnvnameSpacesRelated demoteOccName mkClsOccFSmkClsOcc mkTcOccFSmkTcOcc mkTyVarOccFS mkTyVarOcc mkDataOccFS mkDataOcc mkVarOccFSmkVarOcc mkOccNameFS mkOccName pprOccNamepprNameSpaceBriefpprNonVarNameSpace pprNameSpaceisValNameSpaceisVarNameSpace isTvNameSpaceisTcClsNameSpaceisDataConNameSpacevarNametvName srcDataNamedataName tcClsNameclsNametcName NameSpace HasOccNameoccNameOccEnvOccSet TidyOccEnvDynFlagsgoptdefaultObjectTargetSafeHaskellMode Sf_IgnoreSf_SafeInferredSf_SafeSf_TrustworthySf_None Sf_Unsafe HscTarget HscNothingHscInterpretedHscLlvmHscCHscAsmGhcModeMkDependOneShot CompManagerGhcLink LinkStaticLib LinkDynLib LinkInMemoryNoLink LinkBinary DriverPhases isHsigFile isHsBootOrSighscSourceString HscSourceHsigFile HsSrcFile HsBootFilePhaseModule pprModulemkModule mkModuleNamemoduleNameString ModLocation ml_hie_file ml_obj_file ml_hs_file ml_hi_file FastStringEnvmkFsEnv lookupFsEnv extendFsEnv emptyFsEnv UniqSupplytakeUniqFromSupply BasicTypesfailed succeeded compareFixity negateFixity defaultFixity maxPrecedence PromotionFlag NotPromoted WarningTxt DeprecatedTxtFixityFixityDirectionInfixNInfixLInfixR LexicalFixityPrefixInfixOrigin Generated SuccessFlag SucceededFailedSpliceExplicitFlagExplicitSpliceImplicitSpliceSeveritySevError SevWarningSevInfoSevDumpSevInteractive SevOutputSevFatalSrcLoc unRealSrcSpangetRealSrcSpancLdL isSubspanOfspansleftmost_largestleftmost_smallest rightmost cmpLocated eqLocatedaddCLoc combineLocsmkGeneralLocatednoLocgetLocunLoc srcSpanEnd srcSpanStart srcSpanEndColsrcSpanStartColsrcSpanEndLinesrcSpanStartLine isGoodSrcSpan mkSrcSpan srcLocSpan noSrcSpan srcLocCol srcLocLine srcLocFilenoSrcLocmkSrcLoc RealSrcLoc UnhelpfulLoc RealSrcSpan srcSpanFileSrcSpan UnhelpfulSpan GenLocatedLLocated SrcSpanLess HasSrcSpancomposeSrcSpandecomposeSrcSpan OutputablepprDebugAndThenassertPprPanic pprSTracepprTraceException pprTraceIt pprTraceWith pprTraceMpprTrace pprTraceDebug pprPgmErrorpprSorrypprPanic callStackDocdoOrDoesisOrArepluralspeakNOfspeakNspeakNth intWithCommasquotedListWithNorquotedListWithOr pprQuotedList interpp'SP interppSP pprWithBars pprWithCommaspprFilePathStringpprFastFilePath pprInfixVar pprPrefixVar pprPrimWord64 pprPrimInt64 pprPrimWord pprPrimInt pprPrimCharprimWord64SuffixprimInt64SuffixprimWordSuffixprimDoubleSuffix primIntSuffixprimFloatSuffixprimCharSuffix pprHsBytes pprHsString pprHsCharkeywordcolouredppUnlessppWhen punctuate hangNotEmptyhangfcatfsepcatsepvcathsephcat$+$$$<+><>nest unicodeSyntaxbulletkindType forAllLitrbracelbracerbracklbrackrparenlparenvbardot underscorespaceequalscoloncommasemilarrowttarrowttlarrowtarrowtdarrowlarrowarrowdcolon blankLinequotescparen angleBrackets doubleQuotesquotebracketsbracesparens doublePrecwordrationaldoublefloatintegerintztextptextftextchar docToSDocisEmptyshowSDocDumpOneLineshowSDocOneLinerenderWithStyle showSDocDebug showSDocDumpshowSDocForUsershowSDocUnqualshowPprshowSDoc mkCodeStylepprCodebufLeftRenderSDoc printForCprintForUserPartWay printForUser printSDocLn printSDoc whenPprDebug ifPprDebug getPprDebug userStyle debugStyle dumpStyleasmStyle codeStyle queryQual qualPackage qualModulequalNameupdSDocDynFlagssdocWithPlatformsdocWithDynFlags getPprStyle pprSetDepth pprDeeperList pprDeeperwithPprStyleDoc withPprStyleinitSDocContextsetStyleColoured mkUserStylecmdlineParserStyle mkErrStyledefaultErrStyle mkDumpStyledefaultDumpStyledefaultUserStyle neverQualify alwaysQualifyreallyAlwaysQualifyneverQualifyPackagesalwaysQualifyPackagesneverQualifyModulesalwaysQualifyModulesneverQualifyNamesalwaysQualifyNamesreallyAlwaysQualifyNamesPprStyle CodeStyleCStyleAsmStyleDepth AllTheWayPartWayPrintUnqualified QueryQualifyqueryQualifyPackagequeryQualifyNamequeryQualifyModuleQueryQualifyNameQueryQualifyModuleQueryQualifyPackage QualifyNameNameNotInScope2NameNotInScope1 NameUnqualNameQualpprpprPrec BindingSiteLetBind CasePatBind LambdaBindCaseBindOutputableBndrbndrIsJoin_maybe pprInfixOccpprBndr pprPrefixOcc moduleName moduleUnitId ModuleNameUnitId FastString isFunTyCon tyConTyVars tyConKind tyConArityPanicwithSignalHandlersshowGhcException GhcExceptionPprProgramError ProgramErrorInstallationErrorPprSorrySorryPprPanic CmdLineError UsageErrorSignal PlainPanic assertPanicpgmErrorsorrypanicshowSDocUnsafe warnPprTracetextSDocrunSDoc occNameSpace occNameFS cfgWeightInfouniqueIncrement initialUnique maxErrors reverseErrorsmaxInlineMemsetInsnsmaxInlineMemcpyInsnsmaxInlineAllocSizertccInfortldInfoavx512pfavx512favx512eravx512cdavx2avx bmiVersion sseVersionnextWrapperNuminteractivePrintprofAuto colScheme canUseColoruseColor ghciScriptshaddockOptionsghcVersionFileflushErrflushOut log_action ghciHistSize maxWorkerArgsufVeryAggressiveufDearOpufKeenessFactorufDictDiscountufFunAppDiscountufUseThresholdufCreationThresholdextensionFlags extensionstrustworthyOnLocwarnUnsafeOnLoc warnSafeOnLoc pkgTrustOnLocincoherentOnLocoverlapInstLoc newDerivOnLocthOnLoc safeInferred safeInfer safeHaskelllanguagefatalWarningFlags warningFlags generalFlags dumpFlagsgeneratedDumpsnextTempSuffix dirsToClean filesToCleanpkgState pkgDatabase packageEnv trustFlagspluginPackageFlags packageFlagsignorePackageFlagspackageDBFlags depSuffixesdepExcludeModsdepIncludeCppDepsdepIncludePkgDeps depMakefilehooks staticPlugins cachedPluginsfrontendPluginOptspluginModNameOptspluginModNameshpcDirrtsOptsSuggestionsrtsOptsEnabledrtsOptscmdlineFrameworksframeworkPaths libraryPaths includePathsldInputsdumpPrefixForce dumpPrefix dynLibLoaderoutputHi dynOutputFile outputFiledynHiSuf dynObjectSufcanGenerateDynamicToohieSufhiSufhcSuf objectSufdumpDirstubDirhieDirhiDirdylibInstallName objectDir splitInfobuildTagwaysthisUnitIdInsts_thisComponentId_thisInstalledUnitIdsolverIterationsreductionDepth mainFunIs mainModIs importPaths historySizecmmProcAlignment liftLamsKnownliftLamsNonRecArgsliftLamsRecArgs floatLamArgsliberateCaseThresholdbinBlobThresholdspecConstrRecursivespecConstrCountspecConstrThresholdsimplTickFactormaxPmCheckModelsmaxUncoveredPatternsrefLevelHoleFitsmaxRefHoleFitsmaxValidHoleFitsmaxRelevantBinds ghcHeapSizeenableTimeStats parMakeCountstrictnessBefore inlineCheck ruleCheckmaxSimplIterations simplPhases debugLeveloptLevel verbosity llvmConfigintegerLibrary rawSettingsplatformConstants platformMisc toolSettings fileSettingsghcNameVersion hscTargetghcLinkghcModetargetPlatform pprUserLength useUnicodepprCols GeneralFlagOpt_G_NoOptCoercionOpt_G_NoStateHackOpt_PluginTrustworthyOpt_PackageTrustOpt_DistrustAllPackagesOpt_BuildDynamicTooOpt_KeepOFilesOpt_KeepHiFilesOpt_KeepLlvmFilesOpt_KeepRawTokenStreamOpt_KeepTmpFilesOpt_KeepSFilesOpt_KeepHcFilesOpt_KeepHiDiffsOpt_KeepHscppFilesOpt_ImplicitImportQualifiedOpt_AutoLinkPackagesOpt_SuppressTimestampsOpt_SuppressTicksOpt_SuppressStgExtsOpt_SuppressUniquesOpt_SuppressTypeSignaturesOpt_SuppressUnfoldingsOpt_SuppressIdInfoOpt_SuppressTypeApplicationsOpt_SuppressModulePrefixesOpt_SuppressVarKindsOpt_SuppressCoercionsOpt_HexWordLiteralsOpt_ShowLoadedModulesOpt_ShowMatchesOfHoleFitsOpt_ShowProvOfHoleFitsOpt_ShowTypeOfHoleFitsOpt_ShowDocsOfHoleFitsOpt_ShowTypeAppVarsOfHoleFitsOpt_ShowTypeAppOfHoleFitsOpt_UnclutterValidHoleFitsOpt_AbstractRefHoleFitsOpt_SortBySubsumHoleFitsOpt_SortBySizeHoleFitsOpt_SortValidHoleFitsOpt_ShowValidHoleFitsOpt_ShowHoleConstraintsOpt_PprShowTicksOpt_PprCaseAsLetOpt_DiagnosticsShowCaretOpt_DeferDiagnosticsOpt_ErrorSpans Opt_ByteCode Opt_KeepGoing Opt_KeepCAFsOpt_SingleLibFolderOpt_WholeArchiveHsLibsOpt_VersionMacrosOpt_OptimalApplicativeDoOpt_ExternalInterpreter Opt_FlatCacheOpt_HpcOpt_RelativeDynlibPaths Opt_RPathOpt_Ticky_Dyn_Thunk Opt_Ticky_LNEOpt_Ticky_Allocd Opt_TickyOpt_SccProfilingOnOpt_ExternalDynamicRefsOpt_PICExecutableOpt_PIEOpt_PICOpt_DeferOutOfScopeVariablesOpt_DeferTypedHolesOpt_DeferTypeErrorsOpt_HelpfulErrorsOpt_NoItOpt_LocalGhciHistoryOpt_ValidateHieOpt_GhciLeakCheckOpt_GhciHistoryOpt_GhciSandboxOpt_IgnoreDotGhciOpt_BuildingCabalPackageOpt_SharedImplibOpt_EmbedManifestOpt_GenManifestOpt_PrintBindContentsOpt_PrintEvldWithShowOpt_BreakOnErrorOpt_BreakOnExceptionOpt_HaddockOptions Opt_HaddockOpt_PrintBindResultOpt_HideAllPluginPackagesOpt_HideAllPackages Opt_StgStatsOpt_SplitSections Opt_NoHsMainOpt_EagerBlackHolingOpt_ExcessPrecisionOpt_IgnoreHpcChangesOpt_IgnoreOptimChangesOpt_ForceRecompOpt_PpOpt_ProfCountEntriesOpt_AutoSccsOnIndividualCafs Opt_WriteHieOpt_WriteInterfaceOpt_ExposeAllUnfoldingsOpt_OmitInterfacePragmasOpt_IgnoreInterfacePragmasOpt_SimplPreInliningOpt_NumConstantFoldingOpt_CatchBottomsOpt_AlignmentSanitisationOpt_SolveConstantDictsOpt_WorkerWrapper Opt_CprAnalOpt_WeightlessBlocklayoutOpt_CfgBlocklayoutOpt_LoopificationOpt_DmdTxDictSelOpt_DictsStrictOpt_FunToThunkOpt_OmitYieldsOpt_AsmShortcuttingOpt_CmmElimCommonBlocks Opt_CmmSinkOpt_IrrefutableTuplesOpt_LlvmFillUndefWithGarbage Opt_LlvmTBAAOpt_PedanticBottomsOpt_RegsIterative Opt_RegsGraphOpt_EnableThSpliceWarningsOpt_EnableRewriteRulesOpt_DictsCheapOpt_UnboxSmallStrictFieldsOpt_UnboxStrictFieldsOpt_CaseFolding Opt_CaseMergeOpt_DoEtaReductionOpt_IgnoreAssertsOpt_DoLambdaEtaExpansionOpt_SpecConstrKeenOpt_SpecConstrOpt_LiberateCaseOpt_StgLiftLams Opt_StgCSEOpt_CSE Opt_StaticArgumentTransformationOpt_CrossModuleSpecialiseOpt_SpecialiseAggressivelyOpt_SpecialiseOpt_LateSpecialise Opt_FloatInOpt_FullLazinessOpt_KillOneShotOpt_KillAbsenceOpt_LateDmdAnalOpt_StrictnessOpt_Exitification Opt_CallArityOpt_PrintTypecheckerElaborationOpt_PrintPotentialInstancesOpt_PrintExpandedSynonymsOpt_PrintUnicodeSyntaxOpt_PrintAxiomIncompsOpt_PrintEqualityRelationsOpt_PrintExplicitRuntimeRepsOpt_PrintExplicitCoercionsOpt_PrintExplicitKindsOpt_PrintExplicitForallsOpt_HideSourcePathsOpt_ShowWarnGroupsOpt_WarnIsErrorOpt_NoTypeableBinds Opt_FastLlvmOpt_NoLlvmManglerOpt_DoAnnotationLintingOpt_DoAsmLintingOpt_DoCmmLintingOpt_DoStgLintingOpt_DoCoreLintingOpt_D_dump_minimal_importsOpt_DumpToFileOpt_D_faststring_stats Exceptiongfinallygcatchgbracket ghci-8.10.2GHCi.RemoteTypes ForeignHValueHValueghc-boot-th-8.10.2GHC.ForeignSrcLang.TypeForeignSrcLang RawObjectLangAsm LangObjcxxLangObjcLangCxxLangC coreModule HasDefaultExtdefExt issueWarningmkHsAppsreLocreLocAmkLabelNamingT runNamingT runNamingHscuseNamefreshfreshVardebugtypeletnoapplyModeAdvancedSimpleOptions parseOpts parseModeLargeAnonNameslargeAnon_emptylargeAnon_insertlargeAnon_applyPendinglargeAnon_letRecordTlargeAnon_letInsertAslargeAnonNamestypelet_castEqual sourcePluginconstructEquivClasses canonicalizeTcMTypewriteMetaTyVarisFilledMetaTyVar_maybe TcRnMonadnewName TcRnTypesTcGblEnv TcTyThing ConstraintbumpCtLocDepthctEvExprctEqRel ctFlavourctPredctOriginctLoc ctEvidencemkNonCanonicalCtQCInstTcEvDest EvVarDestHoleDest CtEvidence ctev_destctev_loc ctev_pred ctev_evar CtFlavourCtLocMkCoremkAbsentErrorAppaBSENT_ERROR_IDaBSENT_SUM_FIELD_ERROR_ID tYPE_ERROR_IDnON_EXHAUSTIVE_GUARDS_ERROR_IDnO_METHOD_BINDING_ERROR_ID pAT_ERROR_IDrEC_CON_ERROR_IDrUNTIME_ERROR_IDrEC_SEL_ERROR_IDerrorIdsmkImpossibleExprmkRuntimeErrorApp mkJustExpr mkNothingExpr mkBuildExpr mkFoldrExpr mkListExpr mkConsExpr mkNilExpr floatBindings wrapFloats wrapFloatmkSmallTupleCase mkTupleCasemkSmallTupleSelectormkTupleSelector1mkTupleSelectorunitExprmkBigCoreTupTy mkBigCoreTupmkBigCoreVarTupTymkBigCoreVarTup1mkBigCoreVarTupmkCoreTupBoxity mkCoreUbxTup mkCoreTupmkCoreVarTupTymkStringExprFSWithmkStringExprFS mkStringExpr mkCharExpr mkDoubleExpr mkFloatExpr mkNaturalExpr mkIntegerExprmkWordExprWord mkWordExpr mkIntExprInt mkIntExprcastBottomExpr mkIfThenElse mkWildCasemkWildValBindermkWildEvBinder mkCoreApp mkCoreApps mkCoreConApps mkCoreLets mkCoreLams mkCoreLet sortQuantVars FloatBindFloatLet FloatCase CoreUtilsmkSingleAltCaseTcOriginCtOrigin TcEvidence evDataConAppevCast evCoercion lookupEvBind EvBindsVarEvBindeb_lhseb_rhsEvTermEvExprInstEnvsTcLclEnvTcType isMetaTyVar isSkolemTyVarMetaInfoTcLevel TysWiredInpromotedNilDataConpromotedConsDataConpromotedGTDataConpromotedEQDataConpromotedLTDataConpromotedJustDataConpromotedNothingDataConpromotedFalseDataConpromotedTrueDataConmkSumTy mkTupleTy1 mkTupleTy justDataConnothingDataCon maybeTyCon consDataCon nilDataConmkListTyordGTDataConIdordEQDataConIdordLTDataConId ordGTDataCon ordEQDataCon ordLTDataCon orderingTyCon trueDataConIdfalseDataConId trueDataCon falseDataCon boolTyConboolTy doubleDataCon doubleTyCondoubleTy floatDataCon floatTyConfloatTy word8DataCon word8TyConword8Ty wordDataCon wordTyConwordTy intDataConintTyConintTystringTy charDataCon charTyConcharTyboxingDataCon_maybe liftedRepTyliftedRepDataConsumRepDataConTyConliftedTypeKindTyConcoercibleDataConcoercibleClass heqDataConheqClass eqDataConeqClasseqTyConunboxedSumKind sumDataConsumTyConunboxedUnitDataConunboxedUnitTyCon pairTyCon unitDataConId unitDataCon unitTyConKey unitTyContupleDataConName tupleDataConpromotedTupleDataCon tupleTyConcTupleDataConNamescTupleDataConNamecTupleTyConNameArity_maybeisCTupleTyConNamecTupleTyConNamescTupleTyConName mkTupleStrisBuiltInOcc_maybetypeToTypeKindconstraintKindTyContypeSymbolKindContypeNatKindConconsDataCon_RDR listTyCon_RDRintDataCon_RDR charTyCon_RDR intTyCon_RDRtrue_RDR false_RDR boolTyCon_RDRliftedTypeKindTyConNameconstraintKindTyConNamemakeRecoveryTyConanyTyanyTyCondoubleTyConNamefloatTyConNameword8TyConName wordTyConNamejustDataConNamenothingDataConNamemaybeTyConNameconsDataConNamenilDataConName listTyConName boolTyConName intTyConName charTyConNamecoercibleTyConName heqTyConName eqTyCon_RDR eqTyConNamemkWiredInIdNamemkWiredInTyConName wiredInTyCons mkLocalIdCoreSynExprCoercionCoreBndrCoreExprpromoteDataCon classDataCon Predicate mkClassPredclassifyPredTypePred ForAllPred IrredPred ClassPredEqPredEqRelNomEqReprEqmkPrimEqPredRoleisCoercionTy_maybe mkCoercionTytyConAppTyCon_maybetyConAppTyConPicky_maybe mkTyConApp isStrLitTy mkStrLitTy isNumLitTy mkNumLitTy splitAppTyssplitAppTy_maybemkAppTysgetTyVar_maybe isTyVarTydoubleX8PrimTyCondoubleX8PrimTyfloatX16PrimTyConfloatX16PrimTydoubleX4PrimTyCondoubleX4PrimTyfloatX8PrimTyCon floatX8PrimTydoubleX2PrimTyCondoubleX2PrimTyfloatX4PrimTyCon floatX4PrimTyword64X8PrimTyConword64X8PrimTyword32X16PrimTyConword32X16PrimTyword16X32PrimTyConword16X32PrimTyword8X64PrimTyConword8X64PrimTyword64X4PrimTyConword64X4PrimTyword32X8PrimTyConword32X8PrimTyword16X16PrimTyConword16X16PrimTyword8X32PrimTyConword8X32PrimTyword64X2PrimTyConword64X2PrimTyword32X4PrimTyConword32X4PrimTyword16X8PrimTyConword16X8PrimTyword8X16PrimTyConword8X16PrimTyint64X8PrimTyCon int64X8PrimTyint32X16PrimTyConint32X16PrimTyint16X32PrimTyConint16X32PrimTyint8X64PrimTyCon int8X64PrimTyint64X4PrimTyCon int64X4PrimTyint32X8PrimTyCon int32X8PrimTyint16X16PrimTyConint16X16PrimTyint8X32PrimTyCon int8X32PrimTyint64X2PrimTyCon int64X2PrimTyint32X4PrimTyCon int32X4PrimTyint16X8PrimTyCon int16X8PrimTyint8X16PrimTyCon int8X16PrimTythreadIdPrimTyConthreadIdPrimTy mkWeakPrimTy weakPrimTyCon bcoPrimTyCon bcoPrimTy compactPrimTycompactPrimTyConmkStableNamePrimTystableNamePrimTyConmkStablePtrPrimTystablePtrPrimTyCon mkTVarPrimTy tVarPrimTyCon mkMVarPrimTy mVarPrimTyConmkMutVarPrimTymutVarPrimTyConmkSmallMutableArrayPrimTymkMutableArrayArrayPrimTymkMutableByteArrayPrimTymkMutableArrayPrimTymkSmallArrayPrimTymkArrayArrayPrimTybyteArrayPrimTy mkArrayPrimTysmallMutableArrayPrimTyConsmallArrayPrimTyConmutableArrayArrayPrimTyConarrayArrayPrimTyConbyteArrayPrimTyConmutableByteArrayPrimTyConmutableArrayPrimTyConarrayPrimTyCon equalityTyConeqPhantPrimTyConeqReprPrimTyCon eqPrimTyConproxyPrimTyCon mkProxyPrimTy voidPrimTyCon voidPrimTyrealWorldStatePrimTy realWorldTyrealWorldTyConstatePrimTyCon mkStatePrimTydoublePrimTyCon doublePrimTyfloatPrimTyCon floatPrimTy addrPrimTyCon addrPrimTyword64PrimTyCon word64PrimTyword32PrimTyCon word32PrimTyword16PrimTyCon word16PrimTyword8PrimTyCon word8PrimTy wordPrimTyCon wordPrimTyint64PrimTyCon int64PrimTyint32PrimTyCon int32PrimTyint16PrimTyCon int16PrimTy int8PrimTyCon int8PrimTy intPrimTyCon intPrimTy charPrimTyCon charPrimTyprimRepToRuntimeReptYPEmkPrimTyConName tYPETyConName tYPETyConfunTyCon funTyConName openBetaTy openAlphaTy openBetaTyVaropenAlphaTyVar runtimeRep2Ty runtimeRep1TyruntimeRep2TyVarruntimeRep1TyVaralphaTyUnliftedRepalphaTysUnliftedRepalphaTyVarUnliftedRepalphaTyVarsUnliftedRepdeltaTygammaTybetaTyalphaTyalphaTys deltaTyVar gammaTyVar betaTyVar alphaTyVarmkTemplateAnonTyConBindersmkTemplateKindTyConBindersmkTemplateKiTyVarmkTemplateKiTyVarsmkTemplateTyConBindersmkTemplateTyVarsmkTemplateTyVarsFrommkTemplateKindVarsdoublePrimTyConNamefloatPrimTyConNameaddrPrimTyConNameword64PrimTyConNameword32PrimTyConNameword16PrimTyConNameword8PrimTyConNamewordPrimTyConNameint64PrimTyConNameint32PrimTyConNameint16PrimTyConNameint8PrimTyConNameintPrimTyConNamecharPrimTyConNameexposedPrimTyConsunexposedPrimTyCons primTyCons mkTyConTymkPiTysmkPiTy mkForAllTys mkTyVarTys mkTyVarTy CoercionHole ch_co_varch_ref isCoercionTymkAppTyeqTypesplitTyConApp_maybeisLiftedTypeKindTyConName classTyConFunDepmkReflComkUnivComkSymCo mkTransCoCoAxiomRolePhantomNominalRepresentationalmkTyVarCoVarTcTyVarEvVar PrelNamespretendNameIsInScopeinteractiveClassKeysinteractiveClassNamesderivableClassKeysstandardClassKeysfractionalClassKeysnumericClassKeyswordToNaturalIdKeynaturalSDataConKeymkNaturalIdKeytimesNaturalIdKeyminusNaturalIdKeyplusNaturalIdKeynaturalToIntegerIdKeynaturalFromIntegerIdKey makeStaticKeyfromStaticPtrClassOpKeypushCallStackKeyemptyCallStackKeymconcatClassOpKeymappendClassOpKeymemptyClassOpKeysappendClassOpKeycoercibleSCSelIdKey heqSCSelIdKey eqSCSelIdKeybitIntegerIdKey toDynIdKeystarArrStarArrStarKindRepKeystarArrStarKindRepKeystarKindRepKeytr'PtrRepLiftedKeytrRuntimeRepKeytrTYPE'PtrRepLiftedKey trTYPEKey mkTrFunKey typeRepIdKeytypeSymbolTypeRepKeytypeNatTypeRepKey mkTrAppKey mkTrConKey mkTrTypeKey mkTyConKey proxyHashKeytoListClassOpKeyfromListNClassOpKeyfromListClassOpKeyisListClassKeyghciStepIoMClassOpKey mzipIdKey liftMIdKey guardMIdKeytoRationalClassOpKeytoIntegerClassOpKeyrealToFracIdKeyfromIntegralIdKeytoAnnotationWrapperIdKeyfromStringClassOpKey loopAIdKey choiceAIdKey appAIdKey firstAIdKey composeAIdKey arrAIdKeyfailMClassOpKey mfixIdKeyreturnMClassOpKeyfmapClassOpKeythenMClassOpKeybindMClassOpKeynegateClassOpKey geClassOpKey eqClassOpKeyenumFromThenToClassOpKeyenumFromToClassOpKeyenumFromThenClassOpKeyenumFromClassOpKeyfromRationalClassOpKeyminusClassOpKeyfromIntegerClassOpKey unboundKey coerceKey magicDictKey undefinedKeycheckDotnetResNameIdKeyunmarshalStringIdKeymarshalStringIdKeymarshalObjectIdKeyunmarshalObjectIdKeyrationalToDoubleIdKeyrationalToFloatIdKey noinlineIdKeycoercionTokenIdKey dollarIdKeygroupWithIdKeymapIdKey inlineIdKeybreakpointCondIdKeybreakpointIdKeytraceKeyrunRWKey oneShotKeyassertErrorIdKey lazyIdKey thenIOIdKey runMainKey rootMainKeydecodeDoubleIntegerIdKeyint64ToIntegerIdKeyword64ToIntegerIdKeywordToIntegerIdKeyshiftRIntegerIdKeyshiftLIntegerIdKeycomplementIntegerIdKeyxorIntegerIdKeyorIntegerIdKeyandIntegerIdKeylcmIntegerIdKeygcdIntegerIdKeyencodeDoubleIntegerIdKeyencodeFloatIntegerIdKeydoubleFromIntegerIdKeyfloatFromIntegerIdKeyquotRemIntegerIdKeydivModIntegerIdKeymodIntegerIdKeydivIntegerIdKeyremIntegerIdKeyquotIntegerIdKeycompareIntegerIdKeygeIntegerPrimIdKeyltIntegerPrimIdKeygtIntegerPrimIdKeyleIntegerPrimIdKeysignumIntegerIdKeyabsIntegerIdKeyneqIntegerPrimIdKeyeqIntegerPrimIdKeynegateIntegerIdKeyminusIntegerIdKeytimesIntegerIdKeyplusIntegerIdKeyintegerToInt64IdKeyintegerToWord64IdKeyintegerToIntIdKeyintegerToWordIdKeysmallIntegerIdKeymkIntegerIdKey assertIdKeyotherwiseIdKeysndIdKeyfstIdKey voidArgIdKey nullAddrIdKey failIOIdKey printIdKeynewStablePtrIdKey returnIOIdKey bindIOIdKeyzipIdKey filterIdKey concatIdKeyunsafeCoerceIdKeyabsentSumFieldErrorIdKey modIntIdKey divIntIdKeytypeErrorIdKey voidPrimIdKeyunpackCStringIdKeyunpackCStringFoldrIdKeyunpackCStringAppendIdKeyunpackCStringUtf8IdKeyrecConErrorIdKeyrealWorldPrimIdKey patErrorIdKeyruntimeErrorIdKeynonExhaustiveGuardsErrorIdKeynoMethodBindingErrorIdKey eqStringIdKeyseqIdKeyrecSelErrorIdKey foldrIdKey errorIdKey buildIdKey appendIdKey augmentIdKeyabsentErrorIdKey wildCardKeytypeLitNatDataConKeytypeLitSymbolDataConKeykindRepTypeLitDDataConKeykindRepTypeLitSDataConKeykindRepTYPEDataConKeykindRepFunDataConKeykindRepAppDataConKeykindRepVarDataConKeykindRepTyConAppDataConKeyvecElemDataConKeysvecCountDataConKeysunliftedRepDataConKeysunliftedSimpleRepDataConKeysliftedRepDataConKeyruntimeRepSimpleDataConKeyssumRepDataConKeytupleRepDataConKeyvecRepDataConKeymetaSelDataConKeymetaConsDataConKeymetaDataDataConKeydecidedUnpackDataConKeydecidedStrictDataConKeydecidedLazyDataConKeynoSourceStrictnessDataConKeysourceStrictDataConKeysourceLazyDataConKeynoSourceUnpackednessDataConKeysourceNoUnpackDataConKeysourceUnpackDataConKeynotAssociativeDataConKeyrightAssociativeDataConKeyleftAssociativeDataConKeyinfixIDataConKeyprefixIDataConKeytypeErrorShowTypeDataConKeytypeErrorVAppendDataConKeytypeErrorAppendDataConKeytypeErrorTextDataConKeytypeLitSortTyConKeykindRepTyConKeytrGhcPrimModuleKeytrNameDDataConKeytrNameSDataConKeytrNameTyConKeytrModuleDataConKeytrModuleTyConKeytrTyConDataConKeytrTyConTyConKeysrcLocDataConKeyfingerprintDataConKeystaticPtrInfoDataConKeystaticPtrDataConKeycoercibleDataConKeyordGTDataConKeyordEQDataConKeyordLTDataConKeyrightDataConKeyleftDataConKeygenUnitDataConKey inrDataConKey inlDataConKeycrossDataConKey heqDataConKeyintegerDataConKey ioDataConKeywordDataConKeytrueDataConKeystableNameDataConKeyword8DataConKeyratioDataConKey nilDataConKey eqDataConKeyjustDataConKeynothingDataConKeyintegerSDataConKey intDataConKeyfloatDataConKeyfalseDataConKeydoubleDataConKeyconsDataConKeycharDataConKeydoubleX8PrimTyConKeyfloatX16PrimTyConKeydoubleX4PrimTyConKeyfloatX8PrimTyConKeydoubleX2PrimTyConKeyfloatX4PrimTyConKeyword64X8PrimTyConKeyword32X16PrimTyConKeyword16X32PrimTyConKeyword8X64PrimTyConKeyword64X4PrimTyConKeyword32X8PrimTyConKeyword16X16PrimTyConKeyword8X32PrimTyConKeyword64X2PrimTyConKeyword32X4PrimTyConKeyword16X8PrimTyConKeyword8X16PrimTyConKeyint64X8PrimTyConKeyint32X16PrimTyConKeyint16X32PrimTyConKeyint8X64PrimTyConKeyint64X4PrimTyConKeyint32X8PrimTyConKeyint16X16PrimTyConKeyint8X32PrimTyConKeyint64X2PrimTyConKeyint32X4PrimTyConKeyint16X8PrimTyConKeyint8X16PrimTyConKeytypeSymbolAppendFamNameKeysomeTypeRepDataConKeysomeTypeRepTyConKeytypeRepTyConKeycallStackTyConKeystaticPtrInfoTyConKeystaticPtrTyConKeysmallMutableArrayPrimTyConKeysmallArrayPrimTyConKey anyTyConKey specTyConKeyproxyPrimTyConKeycoercibleTyConKey ntTyConKeyerrorMessageTypeErrorFamKeytypeNatLogTyFamNameKeytypeNatModTyFamNameKeytypeNatDivTyFamNameKeytypeNatCmpTyFamNameKeytypeSymbolCmpTyFamNameKeytypeNatSubTyFamNameKeytypeNatLeqTyFamNameKeytypeNatExpTyFamNameKeytypeNatMulTyFamNameKeytypeNatAddTyFamNameKeytypeSymbolKindConNameKeytypeNatKindConNameKey uWordTyConKey uIntTyConKeyuFloatTyConKeyuDoubleTyConKey uCharTyConKey uAddrTyConKey uRecTyConKey rep1TyConKey repTyConKey noSelTyConKey s1TyConKey c1TyConKey d1TyConKey rec0TyConKey sTyConKey cTyConKey dTyConKey rTyConKey compTyConKey prodTyConKey sumTyConKey m1TyConKey k1TyConKey rec1TyConKey par1TyConKey u1TyConKey v1TyConKeyopaqueTyConKeyunknown3TyConKeyunknown2TyConKeyunknown1TyConKeyunknownTyConKeyfrontendPluginTyConKeypluginTyConKeyvecElemTyConKeyvecCountTyConKeyruntimeRepTyConKeyconstraintKindTyConKey tYPETyConKeyeitherTyConKeyobjectTyConKeycompactPrimTyConKeytVarPrimTyConKeyfunPtrTyConKey ptrTyConKeybcoPrimTyConKeythreadIdPrimTyConKey typeConKey boxityConKey kindConKey anyBoxConKeyunliftedConKey liftedConKeyword64TyConKeyword64PrimTyConKeyword32TyConKeyword32PrimTyConKeyword16TyConKeyword16PrimTyConKey word8TyConKeyword8PrimTyConKey wordTyConKeywordPrimTyConKeyvoidPrimTyConKey ioTyConKeymutVarPrimTyConKeyeqPhantPrimTyConKeyeqReprPrimTyConKeyeqPrimTyConKeystableNameTyConKeystableNamePrimTyConKeystatePrimTyConKeymutableArrayArrayPrimTyConKeyarrayArrayPrimTyConKey heqTyConKey eqTyConKeystablePtrTyConKeystablePtrPrimTyConKeyrealWorldTyConKeyrationalTyConKey ratioTyConKeymVarPrimTyConKeyorderingTyConKeymutableByteArrayPrimTyConKeymutableArrayPrimTyConKeyweakPrimTyConKey maybeTyConKeyforeignObjPrimTyConKey listTyConKeynaturalTyConKeyintegerTyConKey int64TyConKeyint64PrimTyConKey int32TyConKeyint32PrimTyConKey int16TyConKeyint16PrimTyConKey int8TyConKeyint8PrimTyConKey intTyConKeyintPrimTyConKey funTyConKey floatTyConKeyfloatPrimTyConKeydoubleTyConKeydoublePrimTyConKey charTyConKeycharPrimTyConKeybyteArrayPrimTyConKey boolTyConKeyarrayPrimTyConKeyaddrPrimTyConKeyhasFieldClassNameKey ipClassKeymonoidClassKeysemigroupClassKeyisLabelClassNameKeyghciIoClassKeyknownSymbolClassNameKeyknownNatClassNameKeyselectorClassKeyconstructorClassKeydatatypeClassKey gen1ClassKey genClassKeytraversableClassKeyfoldableClassKeyapplicativeClassKeyisStringClassKeyrandomGenClassKeyrandomClassKeymonadPlusClassKeymonadFailClassKeymonadFixClassKeytypeable7ClassKeytypeable6ClassKeytypeable5ClassKeytypeable4ClassKeytypeable3ClassKeytypeable2ClassKeytypeable1ClassKeytypeableClassKey ixClassKey showClassKeyrealFracClassKeyrealFloatClassKey realClassKey readClassKey ordClassKey numClassKeyfunctorClassKey dataClassKey monadClassKeyintegralClassKeyfractionalClassKeyfloatingClassKey eqClassKey enumClassKeyboundedClassKeymk_known_key_namedcQualclsQualtcQualvarQualfingerprintDataConNamefromStaticPtrNamestaticPtrDataConNamestaticPtrTyConNamestaticPtrInfoDataConNamestaticPtrInfoTyConNamemakeStaticNamefrontendPluginTyConNamepluginTyConNamepLUGINSsrcLocDataConNamepushCallStackNameemptyCallStackNamecallStackTyConNamehasFieldClassName ipClassNameisLabelClassNameknownSymbolClassNameknownNatClassNameisStringClassNamerandomGenClassNamerandomClassNamemonadPlusClassNametoAnnotationWrapperNamemzipName liftMName guardMName loopAName choiceANameappAName firstAName composeANamearrANamemfixNamemonadFixClassNamenewStablePtrNamestablePtrTyConNamefunPtrTyConName ptrTyConNameword64TyConNameword32TyConNameword16TyConNameint64TyConNameint32TyConNameint16TyConName int8TyConName printName failIOName returnIOName bindIOName thenIOName ioDataConName ioTyConNameghciStepIoMNameghciIoClassNamegenericClassNamesselectorClassNameconstructorClassNamedatatypeClassName gen1ClassName genClassName readClassName showClassName toListName fromListNName fromListNameisListClassNamezipName filterName concatNameboundedClassNameenumFromThenToNameenumFromThenNameenumFromToName enumFromName enumClassName traceNameassertErrorName dataClassName toDynNametypeErrorShowTypeDataConNametypeErrorVAppendDataConNametypeErrorAppendDataConNametypeErrorTextDataConNameerrorMessageTypeErrorFamNamestarArrStarArrStarKindRepNamestarArrStarKindRepNamestarKindRepNametrGhcPrimModuleNametypeSymbolTypeRepNametypeNatTypeRepName mkTrFunName mkTrAppName mkTrConName mkTrTypeName typeRepIdNamesomeTypeRepDataConNamesomeTypeRepTyConNametypeRepTyConNametypeableClassNametypeLitNatDataConNametypeLitSymbolDataConNametypeLitSortTyConNamekindRepTypeLitDDataConNamekindRepTypeLitSDataConNamekindRepTYPEDataConNamekindRepFunDataConNamekindRepAppDataConNamekindRepVarDataConNamekindRepTyConAppDataConNamekindRepTyConNametrTyConDataConNametrTyConTyConNametrNameDDataConNametrNameSDataConNametrNameTyConNametrModuleDataConNametrModuleTyConName ixClassNamerationalToDoubleNamerationalToFloatNamerealFloatClassNamefloatingClassNamerealToFracNamefromIntegralNametoRationalName toIntegerNamefromRationalNamefractionalClassNamerealFracClassNameintegralClassName realClassNameratioDataConNameratioTyConNamerationalTyConNamewordToNaturalName mkNaturalNametimesNaturalNameminusNaturalNameplusNaturalNamenaturalToIntegerNamenaturalFromIntegerNamenaturalSDataConNamenaturalTyConNamebitIntegerNameshiftRIntegerNameshiftLIntegerNamecomplementIntegerNamexorIntegerName orIntegerNameandIntegerNamelcmIntegerNamegcdIntegerNamedecodeDoubleIntegerNameencodeDoubleIntegerNameencodeFloatIntegerNamedoubleFromIntegerNamefloatFromIntegerNamemodIntegerNamedivIntegerNameremIntegerNamequotIntegerNamedivModIntegerNamequotRemIntegerNamecompareIntegerNamegeIntegerPrimNameltIntegerPrimNamegtIntegerPrimNameleIntegerPrimNamesignumIntegerNameabsIntegerNameneqIntegerPrimNameeqIntegerPrimNamenegateIntegerNameminusIntegerNameintegerToIntNameintegerToWordNamewordToIntegerNamesmallIntegerNametimesIntegerNameplusIntegerNameint64ToIntegerNameword64ToIntegerNameintegerToInt64NameintegerToWord64Name mkIntegerNameintegerSDataConNameintegerTyConName negateName minusNamefromIntegerName numClassNamesndNamefstNamefromStringNameopaqueTyConNamebreakpointCondNamebreakpointName assertName appendNamemapName augmentName buildName foldrNameotherwiseIdName dollarName groupWithNamealternativeClassKeythenAClassOpKeypureAClassOpKey apAClassOpKey joinMIdKeyalternativeClassName joinMName mconcatName mappendName memptyNamemonoidClassName sappendNamesemigroupClassNametraversableClassNamefoldableClassName thenAName pureANameapANameapplicativeClassName failMNamemonadFailClassName returnMName bindMName thenMNamemonadClassNamefmapNamefunctorClassNamegeName ordClassNameeqName eqClassName inlineIdName eqStringNameunpackCStringUtf8NameunpackCStringFoldrNameunpackCStringName modIntName divIntNamemetaSelDataConNamemetaConsDataConNamemetaDataDataConNamedecidedUnpackDataConNamedecidedStrictDataConNamedecidedLazyDataConNamenoSourceStrictnessDataConNamesourceStrictDataConNamesourceLazyDataConNamenoSourceUnpackednessDataConNamesourceNoUnpackDataConNamesourceUnpackDataConNamenotAssociativeDataConNamerightAssociativeDataConNameleftAssociativeDataConNameinfixIDataConNameprefixIDataConNameuWordTyConName uIntTyConNameuFloatTyConNameuDoubleTyConNameuCharTyConNameuAddrTyConName uRecTyConName rep1TyConName repTyConNamenoSelTyConName s1TyConName c1TyConName d1TyConName rec0TyConName sTyConName cTyConName dTyConName rTyConName compTyConName prodTyConName sumTyConName m1TyConName k1TyConName rec1TyConName par1TyConName u1TyConName v1TyConNamerightDataConNameleftDataConNameeitherTyConName specTyConNameordGTDataConNameordEQDataConNameordLTDataConNameorderingTyConName runRWName runMainIOName wildCardName dataQual_RDR clsQual_RDR tcQual_RDR varQual_RDR mappend_RDR mempty_RDR traverse_RDRall_RDRnull_RDR foldMap_RDRfoldable_foldr_RDR liftA2_RDRap_RDRpure_RDR replace_RDRfmap_RDR uWordHash_RDR uIntHash_RDRuFloatHash_RDRuDoubleHash_RDR uCharHash_RDR uAddrHash_RDRuWordDataCon_RDRuIntDataCon_RDRuFloatDataCon_RDRuDoubleDataCon_RDRuCharDataCon_RDRuAddrDataCon_RDRnotAssocDataCon_RDRrightAssocDataCon_RDRleftAssocDataCon_RDRinfixDataCon_RDRprefixDataCon_RDRconIsRecord_RDR conFixity_RDR conName_RDR selName_RDRisNewtypeName_RDRpackageName_RDRmoduleName_RDRdatatypeName_RDRto1_RDRto_RDR from1_RDRfrom_RDR unComp1_RDRunK1_RDR unRec1_RDR unPar1_RDRcomp1DataCon_RDRprodDataCon_RDR r1DataCon_RDR l1DataCon_RDR m1DataCon_RDR k1DataCon_RDRrec1DataCon_RDRpar1DataCon_RDR u1DataCon_RDR error_RDR undefined_RDR showParen_RDRshowCommaSpace_RDR showSpace_RDRshowString_RDR shows_RDR showsPrec_RDR pfail_RDRprec_RDR reset_RDRalt_RDRstep_RDR symbol_RDR ident_RDRpunc_RDRreadSymField_RDRreadFieldHash_RDR readField_RDR expectP_RDRlexP_RDR choose_RDR parens_RDR readPrec_RDRreadListPrecDefault_RDRreadListPrec_RDRreadListDefault_RDR readList_RDRunsafeRangeSize_RDRunsafeIndex_RDR index_RDR inRange_RDR range_RDR maxBound_RDR minBound_RDRpred_RDRsucc_RDR getTag_RDRnot_RDRand_RDR compose_RDR toList_RDR fromListN_RDR fromList_RDRfromString_RDR stringTy_RDRfromIntegral_RDRtoRational_RDR toInteger_RDRplus_RDR times_RDR minus_RDRfromRational_RDRfromInteger_RDR returnIO_RDR bindIO_RDRnewStablePtr_RDRunpackCStringUtf8_RDRunpackCStringFoldr_RDRunpackCString_RDR eqString_RDR ioDataCon_RDRtimesInteger_RDRplusInteger_RDRratioDataCon_RDRenumFromThenTo_RDRenumFromThen_RDRenumFromTo_RDR enumFrom_RDR toEnum_RDR fromEnum_RDR right_RDRleft_RDR failM_RDR bindM_RDR returnM_RDR build_RDR foldr_RDR append_RDRmap_RDRmonadClass_RDR enumClass_RDR ordClass_RDR numClass_RDR eqClass_RDR gtTag_RDR eqTag_RDR ltTag_RDR compare_RDRgt_RDRlt_RDRle_RDRge_RDReq_RDRmain_RDR_Unqual mkMainModule_ mkMainModulemkThisGhcModule_mkThisGhcModule mkBaseModule_ mkBaseModulemkIntegerModule mkPrimModuledATA_ARRAY_PARALLEL_PRIM_NAMEdATA_ARRAY_PARALLEL_NAME mAIN_NAME pRELUDE_NAMEmkInteractiveModule rOOT_MAIN gHC_RECORDSgHC_OVER_LABELSgHC_FINGERPRINT_TYPEgHC_STATICPTR_INTERNAL gHC_STATICPTRgHC_STACK_TYPES gHC_STACK gHC_SRCLOC dEBUG_TRACE dATA_COERCEdATA_TYPE_EQUALITY gHC_TYPENATS gHC_TYPELITS gHC_GENERICScONTROL_EXCEPTION_BASEgHC_EXTSrANDOM gHC_DESUGARcONTROL_APPLICATIVEaRROW mONAD_FAIL mONAD_ZIP mONAD_FIXmONADgHC_WORDgHC_INTlEX rEAD_PRECgENERICStYPEABLE_INTERNALtYPEABLEdYNAMIC sYSTEM_IOgHC_TOP_HANDLER gHC_FLOATgHC_REALgHC_ERRgHC_PTR gHC_STABLEgHC_IXgHC_STgHC_IO_ExceptiongHC_IOgHC_CONCdATA_TRAVERSABLE dATA_FOLDABLE dATA_STRING dATA_LIST dATA_EITHER dATA_TUPLE gHC_TUPLEgHC_LIST gHC_NATURALgHC_INTEGER_TYPE gHC_MAYBEgHC_NUMgHC_READgHC_SHOWgHC_GHCI_HELPERSgHC_GHCIgHC_ENUMgHC_BASEgHC_PRIMOPWRAPPERS gHC_CLASSES gHC_CSTRING gHC_MAGIC gHC_TYPESgHC_PRIMpRELUDEgenericTyConNamesbasicKnownKeyNames isUnboundName mkUnboundNameitNameallNameStrings listTyContypeSymbolKind typeNatKindmkBoxedTupleTyheqTyConcoercibleTyConunitTyliftedTypeKindconstraintKind vecElemTyCon vecCountTyConruntimeRepTyCon runtimeRepTytupleRepDataConTyConvecRepDataConTyConliftedRepDataConTyCondoubleRepDataConTyfloatRepDataConTyaddrRepDataConTyword64RepDataConTyword32RepDataConTyword16RepDataConTyword8RepDataConTywordRepDataConTyint64RepDataConTyint32RepDataConTyint16RepDataConTyint8RepDataConTyintRepDataConTyunliftedRepDataConTyliftedRepDataConTyvec64DataConTyvec32DataConTyvec16DataConTy vec8DataConTy vec4DataConTy vec2DataConTydoubleElemRepDataConTyfloatElemRepDataConTyword64ElemRepDataConTyword32ElemRepDataConTyword16ElemRepDataConTyword8ElemRepDataConTyint64ElemRepDataConTyint32ElemRepDataConTyint16ElemRepDataConTyint8ElemRepDataConTy anyTypeOfKindunboxedTupleKindmkPromotedListTytupleTyConName mkForAllTyUnivCoProvenancemAINliftedTypeKindTyConKeystringToUnitIdunitIdFSUniqDFMelemUDFMlookupUDFM_Directly lookupUDFMUniqFM listToUFMemptyUFMUniquehasKey Uniquable getUnique isPromotedArity IsPromotedBoxityBoxedUnboxed TupleSortConstraintTuple BoxedTuple UnboxedTuple RealLocated MetaDetailsfsLitunpackFS/ghc-tcplugin-api-0.8.0.0-ITI5dz7KkQpKzXhGV4x9WnGHC.TcPlugin.APImkVisFunTysManymkInvisFunTysManymkVisFunTyManymkInvisFunTyManymkUncheckedIntExprmkTyFamAppReductionmkPluginUnivEvTermmkPluginUnivCo setEvBindnewCoercionHolenewEvVarsetCtLocRewriteM setCtLocMrewriteEnvCtLocnewGiven newWantedzonkCt zonkTcTypeisTouchableTcPluginM newFlexiTyVar newUniquematchFamgetFamInstEnvs getInstEnvsgetEnvs tcLookupIdtcLookuptcLookupGlobal tcLookupClasstcLookupDataCon tcLookupTyCon lookupOrigfindImportedModule pkgQual_pkg tcPluginTrace tcPluginIOPkgQualOtherPkg NoPkgQualThisPkgGHC.TcPlugin.API.InternalmkTcPluginErrorTy mkTcPlugin askRewriteEnv askDeriveds askEvBinds TcPluginStageRewriteSolveStopInitTcPluginSolverTcPluginRewriterTcPlugintcPluginRewrite tcPluginStop tcPluginInit tcPluginSolve TcPluginM MonadTcPluginMonadTcPluginWorkTcPluginErrorMessage:-::|:Txt PrintTypeGHC.TcPlugin.API.Internal.Shim RewriteEnvTcPluginSolveResultTcPluginContradiction TcPluginOkTcPluginRewriteResultTcPluginNoRewriteTcPluginRewriteTotcPluginReductiontcRewriterWanteds(GHC.TcPlugin.API.Internal.Shim.Reduction ReductionreductionCoercionreductionReducedTypeisCanonicalVarEq FieldNamefromFastString$fIsStringFieldNameGHC.ShowShow Data.String fromString fieldNameHashfieldNameLabel ResolvedNames clsAllFieldsclsKnownFields clsKnownHashclsRowHasField clsSubRowdataConDictAnyidEvidenceAllFieldsidEvidenceKnownFieldsidEvidenceKnownHashidEvidenceRowHasFieldidEvidenceSubRowidUnsafeCoerce tyConDictAny tyConMergetyConFieldTypes tyConPairtyConSimpleFieldTypesnameResolution KnownFieldtoExprtoTypeknownFieldNameknownFieldInfo TyConSubst Classifiedprocess mkTyConSubstclassifysplitTyConApp_upToParseOk ParseNoMatch ParseErrorparseAll parseAll'withOrigparseConstraintparseConstraint' parseConsparseNilparseInjTyConApp ParseResult CKnownHashknownHashLabel knownHashTypeparseKnownHashsolveKnownHash alterExisting GHC.MaybeNothing$fFunctorSmallHashMapGHC.BaseFunctorcontainers-0.6.2.1Data.Map.InternalMap SmallHashMapnulllookupmemberalter NotSubRowTargetContainsShadowedFieldsSourceMissesFieldsKnownRowknownRecordVectorknownRecordVisibleknownRecordAllVisibleghc-prim GHC.TypesFalseisSubRowfromList visibleMaptraverseindexedallKnown FieldLabel FieldKnownFieldVarFields parseFieldsparseFieldLabel CRowHasField hasFieldLabelhasFieldRecordhasFieldTypeKindhasFieldTypeLabelhasFieldTypeRowhasFieldTypeFieldparseRowHasFieldsolveRowHasFieldrewriteCSubRowsubrowParsedLHSsubrowParsedRHS subrowTypeLHS subrowTypeRHSsubrowTypeKind parseSubRow solveSubRow CKnownFieldsknownFieldsParsedFieldsknownFieldsTypeRecordknownFieldsTypeKindparseKnownFieldssolveKnownFields CAllFieldsallFieldsParsedFieldsallFieldsTypeFieldsallFieldsTypeConstraintallFieldsTypeKindparseAllFieldssolveAllFieldssolveplugin StrictArray(primitive-0.7.4.0-Jn1nYXToEHPK8exID3XEUlData.Primitive.SmallArray SmallArray! fromListNfromLazytoLazy//update backpermute Canonical getAtIndex setAtIndextoVector fromVectorapplydiffUpddiffInsdiffNew DictSubRow fieldDictsprojectIndicesDictAny DictAllFieldsDictKnownFields fieldNamesDictRowHasField rowHasFieldevidenceRowHasFieldevidenceKnownFieldsevidenceAllFields fieldMetadataevidenceKnownHashevidenceSubRownoInlineUnsafeCoreflectRowHasFieldGHC.OverloadedLabelsIsLabelgetFieldsetFieldRecordConstraintsfmap<*>