The test-hackage-ags package

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.



For testing how the Hackage package page will look (esp. the flags) via candidates system on Hackage.


Change logNone available
Dependenciesbase (==4.7.*) [details]
AuthorAndrew G. Seniuk
MaintainerAndrew Seniuk <>
UploadedSun Jan 25 22:52:44 UTC 2015 by AndrewSeniuk



hello_hackage_visitor[Note to those reading on Hackage:] Please ignore these flags, which would be better presented in a collapsed state. The flags are mostly for development purposes.DisabledAutomatic
haskell98_fragmentSacrifice generic deriving, the NFDataPDyn module, and a couple functions from the PatUtil module, in exchange for true Haskell98 conformance (portability). (One non-H98 thing it insists on is PatternGuards, although this could be relieved in the obvious way, at the expense of code clarity.)DisabledAutomatic
use_par_patnodeOn match, spark recursive submatching for parallel evaluation.EnabledAutomatic
use_pseq_patnodeOn match, use Control.Parallel.pseq to order the evaluation of recursive submatching. This is done by providing a permutation argument; refer to the PatNode for additional documentation.EnabledAutomatic
use_trace_patnodeOn match, log a traceline to stderr en passant.EnabledAutomatic
use_ping_patnodeOn match success and/or match failure, raise an asynchronous exception en passant. This can be useful for gauging term shape relative to pattern shape, dynamically.EnabledAutomatic
use_die_patnodeOn match, kill (just this) thread immediately. To kill the whole program from a pattern node match, use USE_PING_PATNODE, catch the exception in the main thread, and respond from there as you see fit.EnabledAutomatic
use_timing_patnodeOn match, get as precise a measurement of the time of matching as possible, and optionally (depending on how you use the API) measuring and reporting (storing?) differential timestamps (relative to parent node already matched). Not sure how useable this will be (the timestamps need to be very high resolution and cheap enough to obtain), but the principle has its place here, and the flag makes it possible to exclude all this code in case it's not working out.EnabledAutomatic
use_par_seqableThis flag (now) only affects Seqable. (Refer to USE_PAR_PATNODE for a comparable flag affecting NFDataP.) USE_PAR_SEQABLE = True depends on parallel, and permits (dynamically configurable) sparking of Sequable recursive demand propagation.EnabledAutomatic
parallelism_experimentDeprecated; will be gone in 0.7. Only has any effect if NEW_IMPROVED_PATTERN_GRAMMAR is False (which is also deprecated, and will be gone in 0.7).EnabledAutomatic
new_improved_pattern_grammarThe language is about 25% less verbose with this flag set True. Set True by default since version DEPRECATION WARNING: This flag will be removed in a major version or two, in the interests of maintainability. In case there are very early adopters out there, please update your code ASAP to use the new grammar...EnabledAutomatic
use_attoparsecWhen True, depend on and use attoparsec for implementing the Pattern parser. (Probably, this flag will be removed in 0.7, becoming effectively always True.) Unfortunately, attoparsec also requires text, so if you're building in a sandbox this will account for most of your initial build time, but it's a one-time cost.EnabledAutomatic
just_alias_gseqableThe SOP generic function is probably more performant, anyway! (This will be forced False if HASKELL98_FRAGMENT is True.)EnabledAutomatic
just_alias_gnfdatanThe SOP generic function is probably more performant, anyway! (This will be forced False if HASKELL98_FRAGMENT is True.)DisabledAutomatic
just_alias_gnfdatapThe SOP generic function is probably more performant, anyway! (This will be forced False if HASKELL98_FRAGMENT is True.)DisabledAutomatic
provide_data_familyProvide a data family comprising instances corresponding to the Seqable, NFDataN and NFDataP modules. (This will be forced False if HASKELL98_FRAGMENT is True.)EnabledAutomatic
use_curly_brace_instead_of_paren_for_subpatternsChoose grouping convention (concrete syntax) for pattern strings in the DSL. When True, you have "XX.*Y..Y" instead of the (new) default "((.*)..)". Where X=opening curly brace, and Y=closing curly brace - it seems Cabal makes it impossible to present a curly brace in a flag description, even escaped? Unless Unicode entities? &#123; \u007D &#x7d; Nope.DisabledAutomatic
new_semicolon_type_listInstead of displaying # for WI and TI nodes, just show a space. Later: Prefer to let whitespace be freeform, except where parsing attribute substrings like numbers, type names, ... Definitely looks better in the HTML with the hash dimmed down, though!EnabledAutomatic
new_concrete_wi_and_wsUse . instead of # for WI and TI nodes, and use ! instead of . for WS nodes. WS nodes are being considered for deprecation, but it is nice to be able to type a single character (instead of the available equivalent, *1) for them.EnabledAutomatic
abbrev_wn_and_tn_concrete_syntax_to_number_alone__safe_only_to_depth_19So you can write "2(!53)" instead of "*2(!*5*3)". This will be unambiguous up to a depth of 19. (It may still be unambiguous for higher depths, depending on the use case.) This could be convenient if you work a lot manually with the pattern DSL, particularly for vertical alignment of pattern structures, but otherwise it should be False as ambigities can develop, for instance under (showPat . shrinkPat . compilePat) iteration.DisabledAutomatic
abbrev_wn_and_tn_concrete_syntax_to_single_digit__can_only_express_down_to_depth_9Similar to the preceding, but use "1" instead of "!" for depth-1, and moreover, use "0" instead of "." for depth-0. (This is such a niche-case syntax variant, that may as well go all the way!) It makes for very tidy when you're not using a lot of other attributes. This grammar variant is unambiguous; the danger here is only that conventions get mixed in practise...DisabledAutomatic
vacant_hashInstead of using # for WI and TI nodes, just show a space. (Parser continues to accept both.) Later: Prefer to let whitespace be freeform, except where parsing attribute substrings like numbers, type names, ... Definitely looks better in the HTML with the hash dimmed down, though!DisabledAutomatic
type_constrainted_nodes_use_unescaped_space_as_type_list_separatorQuick hack; ought to be handled with NEW_IMPROVED_PATTERN_GRAMMAR, arguably. When False, the separator is a single colon character. Colon will likely become the only separator in 0.7.DisabledAutomatic
provide_old_shrink_patProvide shrinkPat_old temporarily, for compatibility of seqaid demo output with documents already written. This flag (and the shrinkPat_old function) will probably be removed in 0.7.EnabledAutomatic
use_ww_deepseqDepend on deepseq and deepseq-generics, to provide conditional deep forcing. This is optional.EnabledAutomatic
warn_pattern_match_failureFor NFDataP, if a pattern match fails a warning is output to stderr.DisabledAutomatic
use_sopUse the generics-sop package instead of GHC.Generics (in GNFDataN) and instead of SYB (in NFDataPDyn). If USE_SOP is False, then NFDataPDyn, GNFDataP, and GSeqable modules will not be available.EnabledAutomatic
nfdata_instance_patternA flag to assist debugging, affecting a few modules.EnabledAutomatic

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainers' corner

For package maintainers and hackage trustees