github-linguist 7.15.0 → 7.18.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/github-linguist +115 -71
- data/grammars/annotation.liquidhaskell.haskell.json +1 -1
- data/grammars/etc.json +1 -1
- data/grammars/go.mod.json +1 -0
- data/grammars/go.sum.json +1 -0
- data/grammars/hint.haskell.json +1 -1
- data/grammars/hint.message.haskell.json +1 -1
- data/grammars/hint.type.haskell.json +1 -1
- data/grammars/markdown.mcfunction.codeblock.json +1 -0
- data/grammars/source.abap.json +1 -1
- data/grammars/source.al.json +1 -1
- data/grammars/source.avro.json +1 -1
- data/grammars/source.ballerina.json +1 -1
- data/grammars/source.bc.json +1 -0
- data/grammars/source.bicep.json +1 -1
- data/grammars/source.boo.json +1 -1
- data/grammars/source.cirru.json +1 -1
- data/grammars/source.cs.json +1 -1
- data/grammars/source.csound.json +1 -1
- data/grammars/source.css.json +1 -1
- data/grammars/source.dart.json +1 -1
- data/grammars/source.dc.json +1 -0
- data/grammars/source.ditroff.json +1 -1
- data/grammars/source.dotenv.json +1 -0
- data/grammars/source.earthfile.json +1 -0
- data/grammars/source.ecl.json +1 -0
- data/grammars/source.ed.json +1 -0
- data/grammars/source.fnl.json +1 -0
- data/grammars/source.fsharp.json +1 -1
- data/grammars/source.fstar.json +1 -1
- data/grammars/source.futhark.json +1 -1
- data/grammars/source.gcode.json +1 -1
- data/grammars/source.gdscript.json +1 -1
- data/grammars/source.goldgrm.json +1 -0
- data/grammars/source.hack.json +1 -1
- data/grammars/source.haskell.json +1 -1
- data/grammars/source.hsig.json +1 -1
- data/grammars/source.hy.json +1 -1
- data/grammars/source.jest.snap.json +1 -0
- data/grammars/source.jq.json +1 -1
- data/grammars/source.json.json +1 -1
- data/grammars/source.julia.json +1 -1
- data/grammars/source.kakscript.json +1 -0
- data/grammars/source.kotlin.json +1 -1
- data/grammars/source.lean.json +1 -1
- data/grammars/source.m2.json +1 -1
- data/grammars/source.matlab.json +1 -1
- data/grammars/source.mcfunction.json +1 -1
- data/grammars/source.mo.json +1 -0
- data/grammars/source.odin.json +1 -1
- data/grammars/source.opts.json +1 -1
- data/grammars/source.pic.json +1 -1
- data/grammars/source.postscript.json +1 -1
- data/grammars/source.powershell.json +1 -1
- data/grammars/source.promela.json +1 -0
- data/grammars/source.q_output.json +1 -1
- data/grammars/source.rego.json +1 -1
- data/grammars/source.renpy.json +1 -1
- data/grammars/source.scala.json +1 -1
- data/grammars/source.sed.json +1 -1
- data/grammars/source.sqf.json +1 -1
- data/grammars/source.ssh-config.json +1 -1
- data/grammars/source.ts.json +1 -1
- data/grammars/source.tsx.json +1 -1
- data/grammars/source.v.json +1 -1
- data/grammars/source.viml.json +1 -1
- data/grammars/source.ws.json +1 -0
- data/grammars/source.wsd.json +1 -1
- data/grammars/source.xojo.json +1 -1
- data/grammars/source.yara.json +1 -1
- data/grammars/source.yasnippet.json +1 -1
- data/grammars/source.zig.json +1 -1
- data/grammars/text.html.astro.json +1 -0
- data/grammars/text.html.markdown.astro.json +1 -0
- data/grammars/text.html.php.json +1 -1
- data/grammars/text.info.json +1 -0
- data/grammars/text.lesshst.json +1 -0
- data/grammars/text.marko.json +1 -1
- data/grammars/text.roff.json +1 -1
- data/grammars/text.tex.latex.haskell.json +1 -1
- data/grammars/text.xml.svg.json +1 -1
- data/grammars/version +1 -1
- data/lib/linguist/VERSION +1 -1
- data/lib/linguist/documentation.yml +1 -0
- data/lib/linguist/generated.rb +19 -0
- data/lib/linguist/heuristics.yml +10 -3
- data/lib/linguist/languages.json +1 -1
- data/lib/linguist/languages.yml +310 -31
- data/lib/linguist/linguist.so +0 -0
- data/lib/linguist/samples.json +1 -1
- data/lib/linguist/shebang.rb +4 -1
- data/lib/linguist/vendor.yml +3 -0
- metadata +28 -10
- data/grammars/source.SASLog.json +0 -1
- data/grammars/source.mcfunction-snapshot.json +0 -1
- data/lib/linguist/linguist.bundle +0 -0
@@ -1 +1 @@
|
|
1
|
-
{"name":"Haskell","scopeName":"source.haskell","patterns":[{"include":"#haskell_source"}],"repository":{"arrow":{"patterns":[{"name":"keyword.other.arrow.haskell","match":"(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:-\u003e|→)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))"}]},"assignment_op":{"patterns":[{"match":"=","captures":{"0":{"name":"keyword.operator.assignment.haskell"}}}]},"attribute_name":{"patterns":[{"name":"entity.other.attribute-name.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"big_arrow":{"patterns":[{"name":"keyword.other.big-arrow.haskell","match":"(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:=\u003e|⇒)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))"}]},"block_comment":{"patterns":[{"name":"comment.block.haddock.haskell","begin":"\\{-\\s*[|^]","end":"-\\}","patterns":[{"include":"#block_comment"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.haddock.haskell"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.haddock.haskell"}},"applyEndPatternLast":true},{"name":"comment.block.haskell","begin":"\\{-","end":"-\\}","patterns":[{"include":"#block_comment"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.block.start.haskell"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.block.end.haskell"}},"applyEndPatternLast":true}]},"c_preprocessor":{"patterns":[{"name":"meta.preprocessor.c.haskell","begin":"^(?=#)","end":"(?\u003c!\\\\)(?=$)","patterns":[{"name":"keyword.control.c.haskell","match":"^#\\S+"}]}]},"characters":{"patterns":[{"name":"constant.character.escape.haskell","match":"\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])"},{"name":"constant.character.escape.octal.haskell","match":"(?:\\\\o[0-7]+)"},{"name":"constant.character.escape.hexadecimal.haskell","match":"(?:\\\\x[0-9A-Fa-f]+)"},{"name":"constant.character.escape.control.haskell","match":"(?:\\\\\\^[A-Z@\\[\\]\\\\^_])"}]},"class_decl":{"patterns":[{"name":"meta.declaration.class.haskell","begin":"^([ \\t]*)(class)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.class.haskell"}},"endCaptures":{"1":{"name":"keyword.other.haskell"}}}]},"comma":{"patterns":[{"name":"punctuation.separator.comma.haskell","match":","}]},"comments":{"patterns":[{"begin":"(^[ \\t]+)?(?=--+\\s+[|^])","end":"(?!\\G)","patterns":[{"name":"comment.line.double-dash.haddock.haskell","begin":"(--+)\\s+([|^])","end":"$","beginCaptures":{"1":{"name":"punctuation.definition.comment.haskell"},"2":{"name":"punctuation.definition.comment.haddock.haskell"}}}]},{"begin":"(^[ \\t]+)?(?=--+(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))","end":"(?!\\G)","patterns":[{"name":"comment.line.double-dash.haskell","begin":"--","end":"$","beginCaptures":{"0":{"name":"punctuation.definition.comment.haskell"}}}]},{"include":"#block_comment"}]},"common_toplevel":{"patterns":[{"include":"#class_decl"},{"include":"#instance_decl"},{"include":"#deriving_instance_decl"},{"include":"#foreign_import"},{"include":"#regular_import"},{"include":"#data_decl"},{"include":"#type_alias"},{"include":"#c_preprocessor"}]},"ctor_type_declaration":{"patterns":[{"name":"meta.ctor.type-declaration.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"patterns":[{"include":"#type_ctor"},{"include":"#infix_op"}]},"3":{"name":"keyword.other.double-colon.haskell"}}}]},"data_decl":{"patterns":[{"name":"meta.declaration.type.data.haskell","begin":"^([ \\t]*)(data|newtype)\\s+((?:(?!(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:=|--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))|(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|{-).|{-.*?-})*)","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#comments"},{"include":"#string"},{"include":"#where"},{"include":"#deriving"},{"include":"#via"},{"include":"#assignment_op"},{"include":"#type_ctor_forall"},{"include":"#type_ctor_alt"},{"match":"\\|","captures":{"0":{"name":"punctuation.separator.pipe.haskell"}}},{"name":"meta.declaration.type.data.record.block.haskell","begin":"\\{","end":"\\}","patterns":[{"include":"#comments"},{"include":"#comma"},{"include":"#record_field_declaration"}],"beginCaptures":{"0":{"name":"keyword.operator.record.begin.haskell"}},"endCaptures":{"0":{"name":"keyword.operator.record.end.haskell"}}},{"include":"#ctor_type_declaration"}],"beginCaptures":{"2":{"name":"keyword.other.data.haskell"},"3":{"name":"meta.type-signature.haskell","patterns":[{"include":"#family_and_instance"},{"include":"#type_signature"}]}}}]},"deriving":{"patterns":[{"include":"#deriving_list"},{"include":"#deriving_simple"},{"include":"#deriving_keyword"}]},"deriving_instance_decl":{"patterns":[{"name":"meta.declaration.instance.deriving.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)(?:(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s+|(deriving)\\s+(via)\\s+(.*)\\s+)?(instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#pragma"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"},"3":{"patterns":[{"include":"#deriving_strategies"}]},"4":{"name":"keyword.other.haskell"},"5":{"name":"keyword.other.haskell"},"6":{"name":"meta.type-signature.haskell","patterns":[{"include":"#type_signature"}]},"7":{"name":"keyword.other.haskell"}}}]},"deriving_keyword":{"patterns":[{"name":"meta.deriving.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell"},"2":{"patterns":[{"include":"#deriving_strategies"}]}}}]},"deriving_list":{"patterns":[{"name":"meta.deriving.haskell","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s*\\(","end":"\\)","patterns":[{"match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"entity.other.inherited-class.haskell"}}}],"beginCaptures":{"1":{"name":"keyword.other.haskell"},"2":{"patterns":[{"include":"#deriving_strategies"}]}}}]},"deriving_simple":{"patterns":[{"name":"meta.deriving.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell"},"2":{"patterns":[{"include":"#deriving_strategies"}]},"3":{"name":"entity.other.inherited-class.haskell"}}}]},"deriving_strategies":{"patterns":[{"name":"meta.deriving.strategy.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(stock|newtype|anyclass)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell"}}}]},"double_colon_operator":{"patterns":[{"name":"keyword.other.double-colon.haskell","match":"(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))"}]},"empty_list":{"patterns":[{"name":"constant.language.empty-list.haskell","match":"\\[\\]"}]},"family_and_instance":{"patterns":[{"name":"keyword.other.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(family|instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"foreign_import":{"patterns":[{"name":"meta.foreign.haskell","begin":"^([ \\t]*)(foreign)\\s+(import|export)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"match":"(?:un)?safe","captures":{"0":{"name":"keyword.other.haskell"}}},{"include":"#function_type_declaration"},{"include":"#haskell_expr"},{"include":"#comments"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"},"3":{"name":"keyword.other.haskell"}}}]},"function_name":{"patterns":[{"name":"entity.name.function.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"}]}}}]},"function_type_declaration":{"patterns":[{"name":"meta.function.type-declaration.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))","end":"^(?!\\1[ \\t]|[ \\t]*$)|(?=(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"patterns":[{"include":"#function_name"},{"include":"#infix_op"}]},"3":{"name":"keyword.other.double-colon.haskell"}}}]},"function_type_declaration_with_scoped_type":{"patterns":[{"include":"#scoped_type_override"},{"include":"#function_type_declaration"},{"include":"#multiline_type_declaration"}]},"haskell_expr":{"patterns":[{"include":"#infix_function"},{"include":"#unit"},{"include":"#empty_list"},{"include":"#quasi_quotes"},{"include":"#keywords"},{"include":"#pragma"},{"include":"#string"},{"include":"#newline_escape"},{"include":"#quoted_character"},{"include":"#comments"},{"include":"#infix_op"},{"include":"#comma"},{"include":"#lit_num"},{"include":"#scoped_type"},{"include":"#type_application"},{"include":"#operator"},{"include":"#identifier"},{"include":"#type_ctor"}]},"haskell_source":{"patterns":[{"include":"#shebang"},{"include":"#module_decl"},{"include":"#haskell_toplevel"}]},"haskell_toplevel":{"patterns":[{"include":"#liquidhaskell_annotation"},{"include":"#common_toplevel"},{"include":"#function_type_declaration_with_scoped_type"},{"include":"#haskell_expr"}]},"hsig_decl":{"patterns":[{"name":"meta.declaration.module.haskell","begin":"^([ \\t]*)(signature)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#comments"},{"include":"#module_name"},{"include":"#module_exports"},{"include":"#invalid"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"}},"endCaptures":{"1":{"name":"keyword.other.haskell"}}}]},"hsig_source":{"patterns":[{"include":"#hsig_decl"},{"include":"#hsig_toplevel"}]},"hsig_toplevel":{"patterns":[{"include":"#common_toplevel"},{"include":"#function_type_declaration"},{"include":"#lazy_function_type_signature"},{"include":"#comments"}]},"identifier":{"patterns":[{"name":"identifier.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.function.prelude.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(abs|acos|acosh|all|and|any|appendFile|asTypeOf|asin|asinh|atan|atan2|atanh|break|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|errorWithoutStackTrace|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldMap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|mappend|max|maxBound|maximum|maybe|mconcat|mempty|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|pure|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequenceA|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|traverse|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}]},"infix_function":{"patterns":[{"name":"keyword.operator.function.infix.haskell","match":"(`)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(`)","captures":{"1":{"name":"punctuation.definition.entity.haskell"},"2":{"name":"punctuation.definition.entity.haskell"}}}]},"infix_op":{"patterns":[{"name":"entity.name.function.operator.haskell","match":"(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.operator.prelude.haskell","match":"^\\((\\!\\!|\\$\\!|\\$|\\\u0026\\\u0026|\\*|\\*\\*|\\*\\\u003e|\\+|\\+\\+|\\-|\\.|\\/|\\/\\=|\\\u003c\\$|\\\u003c\\$\\\u003e|\\\u003c|\\\u003c\\*|\\\u003c\\*\\\u003e|\\\u003c\\=|\\=\\\u003c\\\u003c|\\=\\=|\\\u003e|\\\u003e\\=|\\\u003e\\\u003e|\\\u003e\\\u003e\\=|\\^|\\^\\^|\\|\\|)\\)$"}]}}}]},"instance_decl":{"patterns":[{"name":"meta.declaration.instance.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)(instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#pragma"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"}},"endCaptures":{"1":{"name":"keyword.other.haskell"}}}]},"invalid":{"patterns":[{"name":"invalid.illegal.character-not-allowed-here.haskell","match":"\\S+"}]},"keywords":{"patterns":[{"name":"keyword.other.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving|where|data|type|newtype)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"name":"keyword.operator.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(infix[lr]?)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"name":"keyword.control.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(do|if|then|else|case|of|let|in|default|mdo|rec|proc)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"lazy_function_type_signature":{"patterns":[{"name":"meta.function.type-declaration.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)(((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))\\s*$","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#double_colon_operator"},{"include":"#type_signature"}],"beginCaptures":{"2":{"patterns":[{"include":"#function_name"},{"include":"#infix_op"}]}}}]},"liquidhaskell_annotation":{"patterns":[{"name":"block.liquidhaskell.haskell","contentName":"block.liquidhaskell.annotation.haskell","begin":"\\{-@(?!#)","end":"@-\\}","patterns":[{"include":"annotation.liquidhaskell.haskell"}]}]},"lit_num":{"patterns":[{"name":"constant.numeric.hexfloat.haskell","match":"0[xX][0-9a-fA-F_]*(?:\\.[0-9a-fA-F_]+(?:[pP][+-]?[0-9_]+)?|[pP][+-]?[0-9_]+)"},{"name":"constant.numeric.hexadecimal.haskell","match":"0[xX][_0-9a-fA-F]+"},{"name":"constant.numeric.octal.haskell","match":"0[oO][_0-7]+"},{"name":"constant.numeric.binary.haskell","match":"0[bB][_01]+"},{"name":"constant.numeric.float.haskell","match":"[0-9][0-9_]*(?:\\.[0-9_]+(?:[eE][+-]?[0-9_]+)?|[eE][+-]?[0-9_]+)"},{"name":"constant.numeric.decimal.haskell","match":"[0-9][_0-9]*"}]},"module_decl":{"patterns":[{"name":"meta.declaration.module.haskell","begin":"^([ \\t]*)(module)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#comments"},{"include":"#module_name"},{"include":"#module_exports"},{"include":"#invalid"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"}},"endCaptures":{"1":{"name":"keyword.other.haskell"}}}]},"module_exports":{"patterns":[{"name":"meta.declaration.exports.haskell","begin":"\\(","end":"\\)","patterns":[{"include":"#comments"},{"include":"#c_preprocessor"},{"begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(module)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","patterns":[{"include":"#invalid"}],"beginCaptures":{"1":{"name":"keyword.other.haskell"}},"endCaptures":{"1":{"name":"support.other.module.haskell"}}},{"include":"#function_name"},{"include":"#type_name"},{"include":"#comma"},{"include":"#infix_op"},{"name":"meta.other.constructor-list.haskell","begin":"\\(","end":"\\)","patterns":[{"include":"#comments"},{"include":"#c_preprocessor"},{"include":"#type_ctor"},{"include":"#attribute_name"},{"include":"#comma"},{"name":"keyword.operator.wildcard.haskell","match":"\\.\\."},{"include":"#infix_op"}]}],"applyEndPatternLast":true}]},"module_name":{"patterns":[{"name":"support.other.module.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"module_name_prefix":{"patterns":[{"name":"support.other.module.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\."}]},"multiline_type_declaration":{"patterns":[{"name":"meta.multiline.type-declaration.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","end":"^(?!\\1|[ \\t]*$)|(?=(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.double-colon.haskell"}}}]},"newline_escape":{"patterns":[{"name":"markup.other.escape.newline.haskell","match":"\\\\$"}]},"operator":{"patterns":[{"name":"keyword.operator.haskell","match":"(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.operator.prelude.haskell","match":"^(\\!\\!|\\$\\!|\\$|\\\u0026\\\u0026|\\*|\\*\\*|\\*\\\u003e|\\+|\\+\\+|\\-|\\.|\\/|\\/\\=|\\\u003c\\$|\\\u003c\\$\\\u003e|\\\u003c|\\\u003c\\*|\\\u003c\\*\\\u003e|\\\u003c\\=|\\=\\\u003c\\\u003c|\\=\\=|\\\u003e|\\\u003e\\=|\\\u003e\\\u003e|\\\u003e\\\u003e\\=|\\^|\\^\\^|\\|\\|)$"}]}}}]},"pragma":{"patterns":[{"name":"meta.preprocessor.haskell","begin":"\\{-#","end":"#-\\}","patterns":[{"name":"keyword.other.preprocessor.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))((?i:NOTINLINE CONSTRUCTORLIKE|NOINLINE CONSTRUCTORLIKE|INLINE CONSTRUCTORLIKE|SPECIALISE NOTINLINE|SPECIALIZE NOTINLINE|SPECIALISE NOINLINE|SPECIALIZE NOINLINE|NOTINLINE CONLIKE|SPECIALISE INLINE|SPECIALIZE INLINE|NOINLINE CONLIKE|VECTORISE SCALAR|VECTORIZE SCALAR|OPTIONS_HADDOCK|INLINE CONLIKE|OPTIONS_DERIVE|OPTIONS_CATCH|OPTIONS_NHC98|OPTIONS_HUGS|OVERLAPPABLE|NOVECTORISE|NOVECTORIZE|OPTIONS_GHC|OPTIONS_JHC|OPTIONS_YHC|OVERLAPPING|DEPRECATED|INCOHERENT|INLINEABLE|SPECIALISE|SPECIALIZE|GENERATED|INLINABLE|NOTINLINE|VECTORISE|VECTORIZE|CONTRACT|LANGUAGE|NOINLINE|NOUNPACK|OVERLAPS|INCLUDE|MINIMAL|OPTIONS|WARNING|CFILES|INLINE|SOURCE|UNPACK|CTYPE|RULES|CORE|LINE|ANN|SCC))(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}]},"quasi_quotes":{"patterns":[{"contentName":"quoted.quasiquotes.qq-$3.haskell","begin":"(\\[)((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))(\\|)","end":"(\\|)(\\])","beginCaptures":{"1":{"name":"punctuation.definition.quasiquotes.begin.haskell"},"2":{"name":"entity.name.tag.haskell","patterns":[{"include":"#module_name_prefix"}]}},"endCaptures":{"2":{"name":"punctuation.definition.quasiquotes.end.haskell"}}}]},"quoted_character":{"patterns":[{"name":"string.quoted.single.haskell","match":"(')((?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))(')","captures":{"1":{"name":"punctuation.definition.string.begin.haskell"},"2":{"patterns":[{"include":"#characters"}]},"3":{"name":"punctuation.definition.string.end.haskell"}}}]},"record_field_declaration":{"patterns":[{"name":"meta.record-field.type-declaration.haskell","contentName":"meta.type-signature.haskell","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))","end":"(?=(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))|})","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"patterns":[{"include":"#attribute_name"},{"include":"#infix_op"}]},"2":{"name":"keyword.other.double-colon.haskell"}}}]},"regular_import":{"patterns":[{"name":"meta.import.haskell","begin":"^([ \\t]*)(import)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#module_name"},{"include":"#module_exports"},{"match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(qualified|as|hiding)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell"}}},{"include":"#comments"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"}}}]},"scoped_type":{"patterns":[{"match":"\\(((?\u003cparen\u003e(?:(?!\\(|\\)).|\\(\\g\u003cparen\u003e\\))*)(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))(?\u003cparen2\u003e(?:(?!\\(|\\)).|\\(\\g\u003cparen2\u003e\\))*))\\)","captures":{"1":{"patterns":[{"include":"#haskell_expr"}]}}},{"match":"((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))((?:(?!{-|(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=|--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))|$).|{-.*?-})*)","captures":{"1":{"name":"keyword.other.double-colon.haskell"},"2":{"name":"meta.type-signature.haskell","patterns":[{"include":"#type_signature"}]}}}]},"scoped_type_override":{"patterns":[{"match":"^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))((?:(?!{-|(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))).|{-.*?-})*)((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","captures":{"2":{"patterns":[{"include":"#identifier"}]},"3":{"name":"keyword.other.double-colon.haskell"},"4":{"name":"meta.type-signature.haskell","patterns":[{"include":"#type_signature"}]},"5":{"patterns":[{"include":"#assignment_op"},{"include":"#operator"}]}}}]},"shebang":{"patterns":[{"name":"comment.line.shebang.haskell","match":"^\\#\\!.*\\brunhaskell\\b.*$"}]},"string":{"patterns":[{"name":"string.quoted.double.haskell","begin":"\"","end":"\"","patterns":[{"include":"#characters"},{"begin":"\\\\\\s","end":"\\\\","patterns":[{"include":"#invalid"}],"beginCaptures":{"0":{"name":"markup.other.escape.newline.begin.haskell"}},"endCaptures":{"0":{"name":"markup.other.escape.newline.end.haskell"}}}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.haskell"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.haskell"}}}]},"type_alias":{"patterns":[{"name":"meta.declaration.type.type.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)(type)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#comments"},{"include":"#family_and_instance"},{"include":"#where"},{"include":"#assignment_op"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.type.haskell"}}}]},"type_application":{"patterns":[{"name":"other.type-application.haskell","match":"(\u003c?\\s+)(@)(\\'?\\((?\u003cparen\u003e(?:(?!\\(|\\)).|\\(\\g\u003cparen\u003e\\))*)\\)|\\'?\\[(?\u003cbrack\u003e(?:(?!\\[|\\]).|\\[\\g\u003cbrack\u003e\\])*)\\]|\"(?\u003cquot\u003e(?:(?!\"|\").|\"\\g\u003cquot\u003e\")*)\"|'(?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))'|\\S+)","captures":{"2":{"patterns":[{"include":"#operator"}]},"3":{"patterns":[{"include":"#type_signature"}]}}}]},"type_ctor":{"patterns":[{"name":"entity.name.tag.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.tag.prelude.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(EQ|GT|LT|Left|Right|True|False)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}]},"type_ctor_alt":{"patterns":[{"contentName":"meta.type-signature.haskell","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s*","end":"^(?!^[ \\t]|[ \\t]*$)|(?=\\{|\\}|\\||(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))deriving(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))","patterns":[{"include":"#comments"},{"include":"#type_signature"}],"beginCaptures":{"1":{"patterns":[{"include":"#type_ctor"}]}}}]},"type_ctor_forall":{"patterns":[{"contentName":"meta.type-signature.haskell","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))forall(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!^[ \\t]|[ \\t]*$)|(?=\\{|\\}|\\||(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))deriving(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))","patterns":[{"include":"#comments"},{"match":"\\G.*?(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:=\u003e|⇒)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))","captures":{"0":{"patterns":[{"include":"#type_signature"}]}}},{"match":"\\G.*?\\.","captures":{"0":{"patterns":[{"include":"#type_signature"}]}}},{"include":"#big_arrow"},{"include":"#type_variable"},{"begin":"\\(","end":"\\)","patterns":[{"include":"#type_signature"}]},{"include":"#type_ctor_alt"}],"beginCaptures":{"0":{"patterns":[{"include":"#type_signature"}]}}}]},"type_name":{"patterns":[{"name":"entity.name.type.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"entity.other.inherited-class.prelude.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Applicative|Bounded|Enum|Eq|Floating|Foldable|Fractional|Functor|Integral|Monad|Monoid|Num|Ord|Read|Real|RealFloat|RealFrac|Show|Traversable)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"name":"support.class.prelude.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Either|FilePath|IO|IOError|Integer|Ordering|Rational|ReadS|ShowS|String|Bool|Char|Double|Float|Int|Just|Maybe|Nothing|Word)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}]},"type_signature":{"patterns":[{"include":"#pragma"},{"include":"#comments"},{"name":"keyword.other.forall.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))forall(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"include":"#quoted_character"},{"name":"other.promoted.haskell","match":"'(\\(\\))","captures":{"1":{"patterns":[{"include":"#unit"}]}}},{"include":"#unit"},{"name":"other.promoted.haskell","match":"'(\\[\\])","captures":{"1":{"patterns":[{"include":"#empty_list"}]}}},{"include":"#empty_list"},{"include":"#string"},{"include":"#arrow"},{"include":"#big_arrow"},{"name":"other.promoted.haskell","match":"'((?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+)","captures":{"1":{"patterns":[{"include":"#operator"}]}}},{"include":"#operator"},{"include":"#type_variable"},{"name":"other.promoted.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}'])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))'([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"patterns":[{"include":"#type_name"}]}}},{"include":"#type_name"},{"include":"#lit_num"}]},"type_variable":{"patterns":[{"name":"variable.other.generic-type.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"unit":{"patterns":[{"name":"constant.language.unit.haskell","match":"\\(\\)"}]},"via":{"patterns":[{"include":"#via_list"},{"include":"#via_list_newline"},{"include":"#via_indent"},{"include":"#via_simple"},{"include":"#via_keyword"}]},"via_indent":{"patterns":[{"name":"meta.via.haskell","begin":"^([ \\t]*)(via)\\s*","end":"^(?!\\1|[ \\t]*$)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"}}}]},"via_keyword":{"patterns":[{"name":"meta.via.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell"}}}]},"via_list":{"patterns":[{"name":"meta.via.haskell","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*\\(","end":"\\)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.other.haskell"}}}]},"via_list_newline":{"patterns":[{"name":"meta.via.haskell","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*","end":"$","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.other.haskell"}}}]},"via_simple":{"patterns":[{"name":"meta.via.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell"},"2":{"patterns":[{"include":"#type_signature"}]}}}]},"where":{"patterns":[{"name":"keyword.other.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}
|
1
|
+
{"name":"Haskell","scopeName":"source.haskell","patterns":[{"include":"#haskell_source"}],"repository":{"arrow":{"patterns":[{"name":"keyword.other.arrow.haskell","match":"(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:-\u003e|→)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))"}]},"assignment_op":{"patterns":[{"match":"=","captures":{"0":{"name":"keyword.operator.assignment.haskell"}}}]},"attribute_name":{"patterns":[{"name":"entity.other.attribute-name.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"big_arrow":{"patterns":[{"name":"keyword.other.big-arrow.haskell","match":"(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:=\u003e|⇒)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))"}]},"block_comment":{"patterns":[{"name":"comment.block.haddock.haskell","begin":"\\{-\\s*[|^]","end":"-\\}","patterns":[{"include":"#block_comment"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.haddock.haskell"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.haddock.haskell"}},"applyEndPatternLast":true},{"name":"comment.block.haskell","begin":"\\{-","end":"-\\}","patterns":[{"include":"#block_comment"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.block.start.haskell"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.block.end.haskell"}},"applyEndPatternLast":true}]},"c_preprocessor":{"patterns":[{"name":"meta.preprocessor.c.haskell","begin":"^(?=#)","end":"(?\u003c!\\\\)(?=$)","patterns":[{"name":"keyword.control.c.haskell","match":"^#\\S+"}]}]},"characters":{"patterns":[{"name":"constant.character.escape.haskell","match":"\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])"},{"name":"constant.character.escape.octal.haskell","match":"(?:\\\\o[0-7]+)"},{"name":"constant.character.escape.hexadecimal.haskell","match":"(?:\\\\x[0-9A-Fa-f]+)"},{"name":"constant.character.escape.control.haskell","match":"(?:\\\\\\^[A-Z@\\[\\]\\\\^_])"}]},"class_decl":{"patterns":[{"name":"meta.declaration.class.haskell","begin":"^([ \\t]*)(class)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.class.haskell"}},"endCaptures":{"1":{"name":"keyword.other.haskell"}}}]},"comma":{"patterns":[{"name":"punctuation.separator.comma.haskell","match":","}]},"comments":{"patterns":[{"begin":"(^[ \\t]+)?(?=--+\\s+[|^])","end":"(?!\\G)","patterns":[{"begin":"(--+)\\s+([|^])(.*)","end":"^(?!--+)","patterns":[{"match":"^(--+)(.*)","captures":{"1":{"name":"punctuation.definition.comment.haskell"},"2":{"name":"comment.line.double-dash.haddock.haskell"}}}],"beginCaptures":{"1":{"name":"punctuation.definition.comment.haskell"},"2":{"name":"punctuation.definition.comment.haddock.haskell"},"3":{"name":"comment.line.double-dash.haddock.haskell"}}}]},{"begin":"(^[ \\t]+)?(?=--+(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))","end":"(?!\\G)","patterns":[{"name":"comment.line.double-dash.haskell","begin":"--+","end":"$","beginCaptures":{"0":{"name":"punctuation.definition.comment.haskell"}}}]},{"include":"#block_comment"}]},"common_toplevel":{"patterns":[{"include":"#class_decl"},{"include":"#instance_decl"},{"include":"#deriving_instance_decl"},{"include":"#foreign_import"},{"include":"#regular_import"},{"include":"#data_decl"},{"include":"#type_alias"},{"include":"#c_preprocessor"}]},"ctor_type_declaration":{"patterns":[{"name":"meta.ctor.type-declaration.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"patterns":[{"include":"#type_ctor"},{"include":"#infix_op"}]},"3":{"name":"keyword.other.double-colon.haskell"}}}]},"data_decl":{"patterns":[{"name":"meta.declaration.type.data.haskell","begin":"^([ \\t]*)(data|newtype)\\s+((?:(?!(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:=|--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))|(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|{-).|{-.*?-})*)","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#comments"},{"include":"#string"},{"include":"#where"},{"include":"#deriving"},{"include":"#via"},{"include":"#assignment_op"},{"include":"#type_ctor_forall"},{"include":"#type_ctor_alt"},{"match":"\\|","captures":{"0":{"name":"punctuation.separator.pipe.haskell"}}},{"name":"meta.declaration.type.data.record.block.haskell","begin":"\\{","end":"\\}","patterns":[{"include":"#comments"},{"include":"#comma"},{"include":"#record_field_declaration"}],"beginCaptures":{"0":{"name":"keyword.operator.record.begin.haskell"}},"endCaptures":{"0":{"name":"keyword.operator.record.end.haskell"}}},{"include":"#ctor_type_declaration"}],"beginCaptures":{"2":{"name":"keyword.other.data.haskell"},"3":{"name":"meta.type-signature.haskell","patterns":[{"include":"#family_and_instance"},{"include":"#type_signature"}]}}}]},"deriving":{"patterns":[{"include":"#deriving_list"},{"include":"#deriving_simple"},{"include":"#deriving_keyword"}]},"deriving_instance_decl":{"patterns":[{"name":"meta.declaration.instance.deriving.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)(?:(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s+|(deriving)\\s+(via)\\s+(.*)\\s+)?(instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#pragma"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"},"3":{"patterns":[{"include":"#deriving_strategies"}]},"4":{"name":"keyword.other.haskell"},"5":{"name":"keyword.other.haskell"},"6":{"name":"meta.type-signature.haskell","patterns":[{"include":"#type_signature"}]},"7":{"name":"keyword.other.haskell"}}}]},"deriving_keyword":{"patterns":[{"name":"meta.deriving.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell"},"2":{"patterns":[{"include":"#deriving_strategies"}]}}}]},"deriving_list":{"patterns":[{"name":"meta.deriving.haskell","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s*\\(","end":"\\)","patterns":[{"match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"entity.other.inherited-class.haskell"}}}],"beginCaptures":{"1":{"name":"keyword.other.haskell"},"2":{"patterns":[{"include":"#deriving_strategies"}]}}}]},"deriving_simple":{"patterns":[{"name":"meta.deriving.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell"},"2":{"patterns":[{"include":"#deriving_strategies"}]},"3":{"name":"entity.other.inherited-class.haskell"}}}]},"deriving_strategies":{"patterns":[{"name":"meta.deriving.strategy.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(stock|newtype|anyclass)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell"}}}]},"double_colon_operator":{"patterns":[{"name":"keyword.other.double-colon.haskell","match":"(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))"}]},"empty_list":{"patterns":[{"name":"constant.language.empty-list.haskell","match":"\\[\\]"}]},"family_and_instance":{"patterns":[{"name":"keyword.other.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(family|instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"foreign_import":{"patterns":[{"name":"meta.foreign.haskell","begin":"^([ \\t]*)(foreign)\\s+(import|export)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"match":"(?:un)?safe","captures":{"0":{"name":"keyword.other.haskell"}}},{"include":"#function_type_declaration"},{"include":"#haskell_expr"},{"include":"#comments"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"},"3":{"name":"keyword.other.haskell"}}}]},"function_name":{"patterns":[{"name":"entity.name.function.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"}]}}}]},"function_type_declaration":{"patterns":[{"name":"meta.function.type-declaration.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))","end":"^(?!\\1[ \\t]|[ \\t]*$)|(?=(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"patterns":[{"include":"#function_name"},{"include":"#infix_op"}]},"3":{"name":"keyword.other.double-colon.haskell"}}}]},"function_type_declaration_with_scoped_type":{"patterns":[{"include":"#scoped_type_override"},{"include":"#function_type_declaration"},{"include":"#multiline_type_declaration"}]},"haskell_expr":{"patterns":[{"include":"#infix_function"},{"include":"#unit"},{"include":"#empty_list"},{"include":"#quasi_quotes"},{"include":"#keywords"},{"include":"#pragma"},{"include":"#string"},{"include":"#newline_escape"},{"include":"#quoted_character"},{"include":"#comments"},{"include":"#infix_op"},{"include":"#comma"},{"include":"#lit_num"},{"include":"#scoped_type"},{"include":"#type_application"},{"include":"#operator"},{"include":"#identifier"},{"include":"#type_ctor"}]},"haskell_source":{"patterns":[{"include":"#shebang"},{"include":"#module_decl"},{"include":"#haskell_toplevel"}]},"haskell_toplevel":{"patterns":[{"include":"#liquidhaskell_annotation"},{"include":"#common_toplevel"},{"include":"#function_type_declaration_with_scoped_type"},{"include":"#haskell_expr"}]},"hsig_decl":{"patterns":[{"name":"meta.declaration.module.haskell","begin":"^([ \\t]*)(signature)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#comments"},{"include":"#module_name"},{"include":"#module_exports"},{"include":"#invalid"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"}},"endCaptures":{"1":{"name":"keyword.other.haskell"}}}]},"hsig_source":{"patterns":[{"include":"#hsig_decl"},{"include":"#hsig_toplevel"}]},"hsig_toplevel":{"patterns":[{"include":"#common_toplevel"},{"include":"#function_type_declaration"},{"include":"#lazy_function_type_signature"},{"include":"#comments"}]},"identifier":{"patterns":[{"name":"identifier.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.function.prelude.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(abs|acos|acosh|all|and|any|appendFile|asTypeOf|asin|asinh|atan|atan2|atanh|break|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|errorWithoutStackTrace|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldMap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|mappend|max|maxBound|maximum|maybe|mconcat|mempty|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|pure|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequenceA|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|traverse|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}]},"infix_function":{"patterns":[{"name":"keyword.operator.function.infix.haskell","match":"(`)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(`)","captures":{"1":{"name":"punctuation.definition.entity.haskell"},"2":{"name":"punctuation.definition.entity.haskell"}}}]},"infix_op":{"patterns":[{"name":"entity.name.function.operator.haskell","match":"(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.operator.prelude.haskell","match":"^\\((\\!\\!|\\$\\!|\\$|\\\u0026\\\u0026|\\*|\\*\\*|\\*\\\u003e|\\+|\\+\\+|\\-|\\.|\\/|\\/\\=|\\\u003c\\$|\\\u003c\\$\\\u003e|\\\u003c|\\\u003c\\*|\\\u003c\\*\\\u003e|\\\u003c\\=|\\=\\\u003c\\\u003c|\\=\\=|\\\u003e|\\\u003e\\=|\\\u003e\\\u003e|\\\u003e\\\u003e\\=|\\^|\\^\\^|\\|\\|)\\)$"}]}}}]},"instance_decl":{"patterns":[{"name":"meta.declaration.instance.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)(instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#pragma"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"}},"endCaptures":{"1":{"name":"keyword.other.haskell"}}}]},"invalid":{"patterns":[{"name":"invalid.illegal.character-not-allowed-here.haskell","match":"\\S+"}]},"keywords":{"patterns":[{"name":"keyword.other.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving|where|data|type|newtype|pattern)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"name":"keyword.operator.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(infix[lr]?)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"name":"keyword.control.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(do|if|then|else|case|of|let|in|default|mdo|rec|proc)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"lazy_function_type_signature":{"patterns":[{"name":"meta.function.type-declaration.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)(((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))\\s*$","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#double_colon_operator"},{"include":"#type_signature"}],"beginCaptures":{"2":{"patterns":[{"include":"#function_name"},{"include":"#infix_op"}]}}}]},"liquidhaskell_annotation":{"patterns":[{"name":"block.liquidhaskell.haskell","contentName":"block.liquidhaskell.annotation.haskell","begin":"\\{-@(?!#)","end":"@-\\}","patterns":[{"include":"annotation.liquidhaskell.haskell"}]}]},"lit_num":{"patterns":[{"name":"constant.numeric.hexfloat.haskell","match":"0[xX][0-9a-fA-F_]*(?:\\.[0-9a-fA-F_]+(?:[pP][+-]?[0-9_]+)?|[pP][+-]?[0-9_]+)"},{"name":"constant.numeric.hexadecimal.haskell","match":"0[xX][_0-9a-fA-F]+"},{"name":"constant.numeric.octal.haskell","match":"0[oO][_0-7]+"},{"name":"constant.numeric.binary.haskell","match":"0[bB][_01]+"},{"name":"constant.numeric.float.haskell","match":"[0-9][0-9_]*(?:\\.[0-9_]+(?:[eE][+-]?[0-9_]+)?|[eE][+-]?[0-9_]+)"},{"name":"constant.numeric.decimal.haskell","match":"[0-9][_0-9]*"}]},"module_decl":{"patterns":[{"name":"meta.declaration.module.haskell","begin":"^([ \\t]*)(module)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#pragma"},{"include":"#comments"},{"include":"#module_name"},{"include":"#module_exports"},{"include":"#invalid"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"}},"endCaptures":{"1":{"name":"keyword.other.haskell"}}}]},"module_exports":{"patterns":[{"name":"meta.declaration.exports.haskell","begin":"\\(","end":"\\)","patterns":[{"include":"#comments"},{"include":"#c_preprocessor"},{"begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(module)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","patterns":[{"include":"#invalid"}],"beginCaptures":{"1":{"name":"keyword.other.haskell"}},"endCaptures":{"1":{"name":"support.other.module.haskell"}}},{"include":"#pattern_name"},{"include":"#type_exportImport"},{"include":"#function_name"},{"include":"#type_name"},{"include":"#comma"},{"include":"#infix_op"},{"name":"meta.other.constructor-list.haskell","begin":"\\(","end":"\\)","patterns":[{"include":"#comments"},{"include":"#c_preprocessor"},{"include":"#type_ctor"},{"include":"#attribute_name"},{"include":"#comma"},{"name":"keyword.operator.wildcard.haskell","match":"\\.\\."},{"include":"#infix_op"}]}],"applyEndPatternLast":true}]},"module_name":{"patterns":[{"name":"support.other.module.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"module_name_prefix":{"patterns":[{"name":"support.other.module.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\."}]},"multiline_type_declaration":{"patterns":[{"name":"meta.multiline.type-declaration.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","end":"^(?!\\1|[ \\t]*$)|(?=(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.double-colon.haskell"}}}]},"newline_escape":{"patterns":[{"name":"markup.other.escape.newline.haskell","match":"\\\\$"}]},"operator":{"patterns":[{"name":"keyword.operator.haskell","match":"(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.operator.prelude.haskell","match":"^(\\!\\!|\\$\\!|\\$|\\\u0026\\\u0026|\\*|\\*\\*|\\*\\\u003e|\\+|\\+\\+|\\-|\\.|\\/|\\/\\=|\\\u003c\\$|\\\u003c\\$\\\u003e|\\\u003c|\\\u003c\\*|\\\u003c\\*\\\u003e|\\\u003c\\=|\\=\\\u003c\\\u003c|\\=\\=|\\\u003e|\\\u003e\\=|\\\u003e\\\u003e|\\\u003e\\\u003e\\=|\\^|\\^\\^|\\|\\|)$"}]}}}]},"pattern_name":{"patterns":[{"name":"meta.declaration.export.qualified.pattern.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(pattern)\\s+([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))","captures":{"1":{"patterns":[{"include":"#keywords"}]},"2":{"patterns":[{"include":"#type_ctor"},{"include":"#infix_op"}]}}}]},"pragma":{"patterns":[{"name":"meta.preprocessor.haskell","begin":"\\{-#","end":"#-\\}","patterns":[{"name":"keyword.other.preprocessor.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))((?i:NOTINLINE CONSTRUCTORLIKE|NOINLINE CONSTRUCTORLIKE|INLINE CONSTRUCTORLIKE|SPECIALISE NOTINLINE|SPECIALIZE NOTINLINE|SPECIALISE NOINLINE|SPECIALIZE NOINLINE|NOTINLINE CONLIKE|SPECIALISE INLINE|SPECIALIZE INLINE|NOINLINE CONLIKE|VECTORISE SCALAR|VECTORIZE SCALAR|OPTIONS_HADDOCK|INLINE CONLIKE|OPTIONS_DERIVE|OPTIONS_CATCH|OPTIONS_NHC98|OPTIONS_HUGS|OVERLAPPABLE|NOVECTORISE|NOVECTORIZE|OPTIONS_GHC|OPTIONS_JHC|OPTIONS_YHC|OVERLAPPING|DEPRECATED|INCOHERENT|INLINEABLE|SPECIALISE|SPECIALIZE|GENERATED|INLINABLE|NOTINLINE|VECTORISE|VECTORIZE|COMPLETE|CONTRACT|LANGUAGE|NOINLINE|NOUNPACK|OVERLAPS|INCLUDE|MINIMAL|OPTIONS|WARNING|CFILES|COLUMN|INLINE|SOURCE|UNPACK|CTYPE|RULES|CORE|LINE|ANN|SCC))(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}]},"quasi_quotes":{"patterns":[{"contentName":"quoted.quasiquotes.qq-$3.haskell","begin":"(\\[)((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))(\\|)","end":"(\\|)(\\])","beginCaptures":{"1":{"name":"punctuation.definition.quasiquotes.begin.haskell"},"2":{"name":"entity.name.tag.haskell","patterns":[{"include":"#module_name_prefix"}]}},"endCaptures":{"2":{"name":"punctuation.definition.quasiquotes.end.haskell"}}}]},"quoted_character":{"patterns":[{"name":"string.quoted.single.haskell","match":"(')((?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))(')","captures":{"1":{"name":"punctuation.definition.string.begin.haskell"},"2":{"patterns":[{"include":"#characters"}]},"3":{"name":"punctuation.definition.string.end.haskell"}}}]},"record_field_declaration":{"patterns":[{"name":"meta.record-field.type-declaration.haskell","contentName":"meta.type-signature.haskell","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))","end":"(?=(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))|})","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"patterns":[{"include":"#attribute_name"},{"include":"#infix_op"}]},"2":{"name":"keyword.other.double-colon.haskell"}}}]},"regular_import":{"patterns":[{"name":"meta.import.haskell","begin":"^([ \\t]*)(import)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#module_name"},{"include":"#module_exports"},{"match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(qualified|as|hiding)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell"}}},{"include":"#comments"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"}}}]},"scoped_type":{"patterns":[{"match":"\\(((?\u003cparen\u003e(?:(?!\\(|\\)).|\\(\\g\u003cparen\u003e\\))*)(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))(?\u003cparen2\u003e(?:(?!\\(|\\)).|\\(\\g\u003cparen2\u003e\\))*))\\)","captures":{"1":{"patterns":[{"include":"#haskell_expr"}]}}},{"match":"((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))((?:(?!{-|(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=|--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))|$).|{-.*?-})*)","captures":{"1":{"name":"keyword.other.double-colon.haskell"},"2":{"name":"meta.type-signature.haskell","patterns":[{"include":"#type_signature"}]}}}]},"scoped_type_override":{"patterns":[{"match":"^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))((?:(?!{-|(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))).|{-.*?-})*)((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","captures":{"2":{"patterns":[{"include":"#identifier"}]},"3":{"name":"keyword.other.double-colon.haskell"},"4":{"name":"meta.type-signature.haskell","patterns":[{"include":"#type_signature"}]},"5":{"patterns":[{"include":"#assignment_op"},{"include":"#operator"}]}}}]},"shebang":{"patterns":[{"name":"comment.line.shebang.haskell","match":"^\\#\\!.*\\brunhaskell\\b.*$"}]},"string":{"patterns":[{"name":"string.quoted.double.haskell","begin":"\"","end":"\"","patterns":[{"include":"#characters"},{"begin":"\\\\\\s","end":"\\\\","patterns":[{"include":"#invalid"}],"beginCaptures":{"0":{"name":"markup.other.escape.newline.begin.haskell"}},"endCaptures":{"0":{"name":"markup.other.escape.newline.end.haskell"}}}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.haskell"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.haskell"}}}]},"type_alias":{"patterns":[{"name":"meta.declaration.type.type.haskell","contentName":"meta.type-signature.haskell","begin":"^([ \\t]*)(type)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#comments"},{"include":"#family_and_instance"},{"include":"#where"},{"include":"#assignment_op"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.type.haskell"}}}]},"type_application":{"patterns":[{"name":"other.type-application.haskell","match":"(\u003c?\\s+)(@)(\\'?\\((?\u003cparen\u003e(?:(?!\\(|\\)).|\\(\\g\u003cparen\u003e\\))*)\\)|\\'?\\[(?\u003cbrack\u003e(?:(?!\\[|\\]).|\\[\\g\u003cbrack\u003e\\])*)\\]|\"(?\u003cquot\u003e(?:(?!\"|\").|\"\\g\u003cquot\u003e\")*)\"|'(?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))'|\\S+)","captures":{"2":{"patterns":[{"include":"#operator"}]},"3":{"patterns":[{"include":"#type_signature"}]}}}]},"type_ctor":{"patterns":[{"name":"entity.name.tag.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.tag.prelude.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(EQ|GT|LT|Left|Right|True|False)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}]},"type_ctor_alt":{"patterns":[{"contentName":"meta.type-signature.haskell","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s*","end":"^(?!^[ \\t]|[ \\t]*$)|(?=\\{|\\}|\\||(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))deriving(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))","patterns":[{"include":"#comments"},{"include":"#type_signature"}],"beginCaptures":{"1":{"patterns":[{"include":"#type_ctor"}]}}}]},"type_ctor_forall":{"patterns":[{"contentName":"meta.type-signature.haskell","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))forall(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!^[ \\t]|[ \\t]*$)|(?=\\{|\\}|\\||(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))deriving(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))","patterns":[{"include":"#comments"},{"match":"\\G.*?(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:=\u003e|⇒)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))","captures":{"0":{"patterns":[{"include":"#type_signature"}]}}},{"match":"\\G.*?\\.","captures":{"0":{"patterns":[{"include":"#type_signature"}]}}},{"include":"#big_arrow"},{"include":"#type_variable"},{"begin":"\\(","end":"\\)","patterns":[{"include":"#type_signature"}]},{"include":"#type_ctor_alt"}],"beginCaptures":{"0":{"patterns":[{"include":"#type_signature"}]}}}]},"type_exportImport":{"patterns":[{"name":"meta.declaration.export.qualified.type.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(type)\\s+([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))","captures":{"1":{"patterns":[{"include":"#keywords"}]},"2":{"patterns":[{"include":"#type_name"},{"include":"#operator"}]}}}]},"type_name":{"patterns":[{"name":"entity.name.type.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"entity.other.inherited-class.prelude.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Applicative|Bounded|Enum|Eq|Floating|Foldable|Fractional|Functor|Integral|Monad|Monoid|Num|Ord|Read|Real|RealFloat|RealFrac|Show|Traversable)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"name":"support.class.prelude.$1.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Either|FilePath|IO|IOError|Integer|Ordering|Rational|ReadS|ShowS|String|Bool|Char|Double|Float|Int|Just|Maybe|Nothing|Word)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}]},"type_signature":{"patterns":[{"include":"#pragma"},{"include":"#comments"},{"name":"keyword.other.forall.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))forall(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"include":"#quoted_character"},{"name":"other.promoted.haskell","match":"'(\\(\\))","captures":{"1":{"patterns":[{"include":"#unit"}]}}},{"include":"#unit"},{"name":"other.promoted.haskell","match":"'(\\[\\])","captures":{"1":{"patterns":[{"include":"#empty_list"}]}}},{"include":"#empty_list"},{"include":"#string"},{"include":"#arrow"},{"include":"#big_arrow"},{"name":"other.promoted.haskell","match":"'((?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+)","captures":{"1":{"patterns":[{"include":"#operator"}]}}},{"include":"#operator"},{"include":"#type_variable"},{"name":"other.promoted.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}'])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))'([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"patterns":[{"include":"#type_name"}]}}},{"include":"#type_name"},{"include":"#lit_num"}]},"type_variable":{"patterns":[{"name":"variable.other.generic-type.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"unit":{"patterns":[{"name":"constant.language.unit.haskell","match":"\\(\\)"}]},"via":{"patterns":[{"include":"#via_list"},{"include":"#via_list_newline"},{"include":"#via_indent"},{"include":"#via_simple"},{"include":"#via_keyword"}]},"via_indent":{"patterns":[{"name":"meta.via.haskell","begin":"^([ \\t]*)(via)\\s*","end":"^(?!\\1|[ \\t]*$)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.haskell"}}}]},"via_keyword":{"patterns":[{"name":"meta.via.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell"}}}]},"via_list":{"patterns":[{"name":"meta.via.haskell","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*\\(","end":"\\)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.other.haskell"}}}]},"via_list_newline":{"patterns":[{"name":"meta.via.haskell","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*","end":"$","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.other.haskell"}}}]},"via_simple":{"patterns":[{"name":"meta.via.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell"},"2":{"patterns":[{"include":"#type_signature"}]}}}]},"where":{"patterns":[{"name":"keyword.other.haskell","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}
|
data/grammars/source.hsig.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"name":"Haskell Module Signature","scopeName":"source.hsig","patterns":[{"include":"#hsig_source"}],"repository":{"arrow":{"patterns":[{"name":"keyword.other.arrow.haskell.hsig","match":"(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:-\u003e|→)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))"}]},"assignment_op":{"patterns":[{"match":"=","captures":{"0":{"name":"keyword.operator.assignment.haskell.hsig"}}}]},"attribute_name":{"patterns":[{"name":"entity.other.attribute-name.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"big_arrow":{"patterns":[{"name":"keyword.other.big-arrow.haskell.hsig","match":"(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:=\u003e|⇒)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))"}]},"block_comment":{"patterns":[{"name":"comment.block.haddock.haskell.hsig","begin":"\\{-\\s*[|^]","end":"-\\}","patterns":[{"include":"#block_comment"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.haddock.haskell.hsig"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.haddock.haskell.hsig"}},"applyEndPatternLast":true},{"name":"comment.block.haskell.hsig","begin":"\\{-","end":"-\\}","patterns":[{"include":"#block_comment"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.block.start.haskell.hsig"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.block.end.haskell.hsig"}},"applyEndPatternLast":true}]},"c_preprocessor":{"patterns":[{"name":"meta.preprocessor.c.hsig","begin":"^(?=#)","end":"(?\u003c!\\\\)(?=$)","patterns":[{"name":"keyword.control.c.hsig","match":"^#\\S+"}]}]},"characters":{"patterns":[{"name":"constant.character.escape.haskell.hsig","match":"\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])"},{"name":"constant.character.escape.octal.haskell.hsig","match":"(?:\\\\o[0-7]+)"},{"name":"constant.character.escape.hexadecimal.haskell.hsig","match":"(?:\\\\x[0-9A-Fa-f]+)"},{"name":"constant.character.escape.control.haskell.hsig","match":"(?:\\\\\\^[A-Z@\\[\\]\\\\^_])"}]},"class_decl":{"patterns":[{"name":"meta.declaration.class.haskell.hsig","begin":"^([ \\t]*)(class)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.class.haskell.hsig"}},"endCaptures":{"1":{"name":"keyword.other.haskell.hsig"}}}]},"comma":{"patterns":[{"name":"punctuation.separator.comma.haskell.hsig","match":","}]},"comments":{"patterns":[{"begin":"(^[ \\t]+)?(?=--+\\s+[|^])","end":"(?!\\G)","patterns":[{"name":"comment.line.double-dash.haddock.haskell.hsig","begin":"(--+)\\s+([|^])","end":"$","beginCaptures":{"1":{"name":"punctuation.definition.comment.haskell.hsig"},"2":{"name":"punctuation.definition.comment.haddock.haskell.hsig"}}}]},{"begin":"(^[ \\t]+)?(?=--+(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))","end":"(?!\\G)","patterns":[{"name":"comment.line.double-dash.haskell.hsig","begin":"--","end":"$","beginCaptures":{"0":{"name":"punctuation.definition.comment.haskell.hsig"}}}]},{"include":"#block_comment"}]},"common_toplevel":{"patterns":[{"include":"#class_decl"},{"include":"#instance_decl"},{"include":"#deriving_instance_decl"},{"include":"#foreign_import"},{"include":"#regular_import"},{"include":"#data_decl"},{"include":"#type_alias"},{"include":"#c_preprocessor"}]},"ctor_type_declaration":{"patterns":[{"name":"meta.ctor.type-declaration.haskell.hsig","contentName":"meta.type-signature.haskell.hsig","begin":"^([ \\t]*)(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"patterns":[{"include":"#type_ctor"},{"include":"#infix_op"}]},"3":{"name":"keyword.other.double-colon.haskell.hsig"}}}]},"data_decl":{"patterns":[{"name":"meta.declaration.type.data.haskell.hsig","begin":"^([ \\t]*)(data|newtype)\\s+((?:(?!(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:=|--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))|(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|{-).|{-.*?-})*)","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#comments"},{"include":"#string"},{"include":"#where"},{"include":"#deriving"},{"include":"#via"},{"include":"#assignment_op"},{"include":"#type_ctor_forall"},{"include":"#type_ctor_alt"},{"match":"\\|","captures":{"0":{"name":"punctuation.separator.pipe.haskell.hsig"}}},{"name":"meta.declaration.type.data.record.block.haskell.hsig","begin":"\\{","end":"\\}","patterns":[{"include":"#comments"},{"include":"#comma"},{"include":"#record_field_declaration"}],"beginCaptures":{"0":{"name":"keyword.operator.record.begin.haskell.hsig"}},"endCaptures":{"0":{"name":"keyword.operator.record.end.haskell.hsig"}}},{"include":"#ctor_type_declaration"}],"beginCaptures":{"2":{"name":"keyword.other.data.haskell.hsig"},"3":{"name":"meta.type-signature.haskell.hsig","patterns":[{"include":"#family_and_instance"},{"include":"#type_signature"}]}}}]},"deriving":{"patterns":[{"include":"#deriving_list"},{"include":"#deriving_simple"},{"include":"#deriving_keyword"}]},"deriving_instance_decl":{"patterns":[{"name":"meta.declaration.instance.deriving.haskell.hsig","contentName":"meta.type-signature.haskell.hsig","begin":"^([ \\t]*)(?:(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s+|(deriving)\\s+(via)\\s+(.*)\\s+)?(instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#pragma"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.haskell.hsig"},"3":{"patterns":[{"include":"#deriving_strategies"}]},"4":{"name":"keyword.other.haskell.hsig"},"5":{"name":"keyword.other.haskell.hsig"},"6":{"name":"meta.type-signature.haskell.hsig","patterns":[{"include":"#type_signature"}]},"7":{"name":"keyword.other.haskell.hsig"}}}]},"deriving_keyword":{"patterns":[{"name":"meta.deriving.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell.hsig"},"2":{"patterns":[{"include":"#deriving_strategies"}]}}}]},"deriving_list":{"patterns":[{"name":"meta.deriving.haskell.hsig","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s*\\(","end":"\\)","patterns":[{"match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"entity.other.inherited-class.haskell.hsig"}}}],"beginCaptures":{"1":{"name":"keyword.other.haskell.hsig"},"2":{"patterns":[{"include":"#deriving_strategies"}]}}}]},"deriving_simple":{"patterns":[{"name":"meta.deriving.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell.hsig"},"2":{"patterns":[{"include":"#deriving_strategies"}]},"3":{"name":"entity.other.inherited-class.haskell.hsig"}}}]},"deriving_strategies":{"patterns":[{"name":"meta.deriving.strategy.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(stock|newtype|anyclass)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell.hsig"}}}]},"double_colon_operator":{"patterns":[{"name":"keyword.other.double-colon.haskell.hsig","match":"(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))"}]},"empty_list":{"patterns":[{"name":"constant.language.empty-list.haskell.hsig","match":"\\[\\]"}]},"family_and_instance":{"patterns":[{"name":"keyword.other.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(family|instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"foreign_import":{"patterns":[{"name":"meta.foreign.haskell.hsig","begin":"^([ \\t]*)(foreign)\\s+(import|export)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"match":"(?:un)?safe","captures":{"0":{"name":"keyword.other.haskell.hsig"}}},{"include":"#function_type_declaration"},{"include":"#haskell_expr"},{"include":"#comments"}],"beginCaptures":{"2":{"name":"keyword.other.haskell.hsig"},"3":{"name":"keyword.other.haskell.hsig"}}}]},"function_name":{"patterns":[{"name":"entity.name.function.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"}]}}}]},"function_type_declaration":{"patterns":[{"name":"meta.function.type-declaration.haskell.hsig","contentName":"meta.type-signature.haskell.hsig","begin":"^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))","end":"^(?!\\1[ \\t]|[ \\t]*$)|(?=(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"patterns":[{"include":"#function_name"},{"include":"#infix_op"}]},"3":{"name":"keyword.other.double-colon.haskell.hsig"}}}]},"function_type_declaration_with_scoped_type":{"patterns":[{"include":"#scoped_type_override"},{"include":"#function_type_declaration"},{"include":"#multiline_type_declaration"}]},"haskell_expr":{"patterns":[{"include":"#infix_function"},{"include":"#unit"},{"include":"#empty_list"},{"include":"#quasi_quotes"},{"include":"#keywords"},{"include":"#pragma"},{"include":"#string"},{"include":"#newline_escape"},{"include":"#quoted_character"},{"include":"#comments"},{"include":"#infix_op"},{"include":"#comma"},{"include":"#lit_num"},{"include":"#scoped_type"},{"include":"#type_application"},{"include":"#operator"},{"include":"#identifier"},{"include":"#type_ctor"}]},"haskell_source":{"patterns":[{"include":"#shebang"},{"include":"#module_decl"},{"include":"#haskell_toplevel"}]},"haskell_toplevel":{"patterns":[{"include":"#liquidhaskell_annotation"},{"include":"#common_toplevel"},{"include":"#function_type_declaration_with_scoped_type"},{"include":"#haskell_expr"}]},"hsig_decl":{"patterns":[{"name":"meta.declaration.module.haskell.hsig","begin":"^([ \\t]*)(signature)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#comments"},{"include":"#module_name"},{"include":"#module_exports"},{"include":"#invalid"}],"beginCaptures":{"2":{"name":"keyword.other.haskell.hsig"}},"endCaptures":{"1":{"name":"keyword.other.haskell.hsig"}}}]},"hsig_source":{"patterns":[{"include":"#hsig_decl"},{"include":"#hsig_toplevel"}]},"hsig_toplevel":{"patterns":[{"include":"#common_toplevel"},{"include":"#function_type_declaration"},{"include":"#lazy_function_type_signature"},{"include":"#comments"}]},"identifier":{"patterns":[{"name":"identifier.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.function.prelude.$1.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(abs|acos|acosh|all|and|any|appendFile|asTypeOf|asin|asinh|atan|atan2|atanh|break|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|errorWithoutStackTrace|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldMap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|mappend|max|maxBound|maximum|maybe|mconcat|mempty|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|pure|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequenceA|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|traverse|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}]},"infix_function":{"patterns":[{"name":"keyword.operator.function.infix.haskell.hsig","match":"(`)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(`)","captures":{"1":{"name":"punctuation.definition.entity.haskell.hsig"},"2":{"name":"punctuation.definition.entity.haskell.hsig"}}}]},"infix_op":{"patterns":[{"name":"entity.name.function.operator.haskell.hsig","match":"(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.operator.prelude.haskell.hsig","match":"^\\((\\!\\!|\\$\\!|\\$|\\\u0026\\\u0026|\\*|\\*\\*|\\*\\\u003e|\\+|\\+\\+|\\-|\\.|\\/|\\/\\=|\\\u003c\\$|\\\u003c\\$\\\u003e|\\\u003c|\\\u003c\\*|\\\u003c\\*\\\u003e|\\\u003c\\=|\\=\\\u003c\\\u003c|\\=\\=|\\\u003e|\\\u003e\\=|\\\u003e\\\u003e|\\\u003e\\\u003e\\=|\\^|\\^\\^|\\|\\|)\\)$"}]}}}]},"instance_decl":{"patterns":[{"name":"meta.declaration.instance.haskell.hsig","contentName":"meta.type-signature.haskell.hsig","begin":"^([ \\t]*)(instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#pragma"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.haskell.hsig"}},"endCaptures":{"1":{"name":"keyword.other.haskell.hsig"}}}]},"invalid":{"patterns":[{"name":"invalid.illegal.character-not-allowed-here.haskell.hsig","match":"\\S+"}]},"keywords":{"patterns":[{"name":"keyword.other.$1.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving|where|data|type|newtype)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"name":"keyword.operator.$1.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(infix[lr]?)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"name":"keyword.control.$1.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(do|if|then|else|case|of|let|in|default|mdo|rec|proc)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"lazy_function_type_signature":{"patterns":[{"name":"meta.function.type-declaration.haskell.hsig","contentName":"meta.type-signature.haskell.hsig","begin":"^([ \\t]*)(((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))\\s*$","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#double_colon_operator"},{"include":"#type_signature"}],"beginCaptures":{"2":{"patterns":[{"include":"#function_name"},{"include":"#infix_op"}]}}}]},"liquidhaskell_annotation":{"patterns":[{"name":"block.liquidhaskell.hsig","contentName":"block.liquidhaskell.annotation.hsig","begin":"\\{-@(?!#)","end":"@-\\}","patterns":[{"include":"annotation.liquidhaskell.haskell"}]}]},"lit_num":{"patterns":[{"name":"constant.numeric.hexfloat.haskell.hsig","match":"0[xX][0-9a-fA-F_]*(?:\\.[0-9a-fA-F_]+(?:[pP][+-]?[0-9_]+)?|[pP][+-]?[0-9_]+)"},{"name":"constant.numeric.hexadecimal.haskell.hsig","match":"0[xX][_0-9a-fA-F]+"},{"name":"constant.numeric.octal.haskell.hsig","match":"0[oO][_0-7]+"},{"name":"constant.numeric.binary.haskell.hsig","match":"0[bB][_01]+"},{"name":"constant.numeric.float.haskell.hsig","match":"[0-9][0-9_]*(?:\\.[0-9_]+(?:[eE][+-]?[0-9_]+)?|[eE][+-]?[0-9_]+)"},{"name":"constant.numeric.decimal.haskell.hsig","match":"[0-9][_0-9]*"}]},"module_decl":{"patterns":[{"name":"meta.declaration.module.haskell.hsig","begin":"^([ \\t]*)(module)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#comments"},{"include":"#module_name"},{"include":"#module_exports"},{"include":"#invalid"}],"beginCaptures":{"2":{"name":"keyword.other.haskell.hsig"}},"endCaptures":{"1":{"name":"keyword.other.haskell.hsig"}}}]},"module_exports":{"patterns":[{"name":"meta.declaration.exports.haskell.hsig","begin":"\\(","end":"\\)","patterns":[{"include":"#comments"},{"include":"#c_preprocessor"},{"begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(module)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","patterns":[{"include":"#invalid"}],"beginCaptures":{"1":{"name":"keyword.other.haskell.hsig"}},"endCaptures":{"1":{"name":"support.other.module.haskell.hsig"}}},{"include":"#function_name"},{"include":"#type_name"},{"include":"#comma"},{"include":"#infix_op"},{"name":"meta.other.constructor-list.haskell.hsig","begin":"\\(","end":"\\)","patterns":[{"include":"#comments"},{"include":"#c_preprocessor"},{"include":"#type_ctor"},{"include":"#attribute_name"},{"include":"#comma"},{"name":"keyword.operator.wildcard.haskell.hsig","match":"\\.\\."},{"include":"#infix_op"}]}],"applyEndPatternLast":true}]},"module_name":{"patterns":[{"name":"support.other.module.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"module_name_prefix":{"patterns":[{"name":"support.other.module.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\."}]},"multiline_type_declaration":{"patterns":[{"name":"meta.multiline.type-declaration.haskell.hsig","contentName":"meta.type-signature.haskell.hsig","begin":"^([ \\t]*)((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","end":"^(?!\\1|[ \\t]*$)|(?=(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.double-colon.haskell.hsig"}}}]},"newline_escape":{"patterns":[{"name":"markup.other.escape.newline.haskell.hsig","match":"\\\\$"}]},"operator":{"patterns":[{"name":"keyword.operator.haskell.hsig","match":"(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.operator.prelude.haskell.hsig","match":"^(\\!\\!|\\$\\!|\\$|\\\u0026\\\u0026|\\*|\\*\\*|\\*\\\u003e|\\+|\\+\\+|\\-|\\.|\\/|\\/\\=|\\\u003c\\$|\\\u003c\\$\\\u003e|\\\u003c|\\\u003c\\*|\\\u003c\\*\\\u003e|\\\u003c\\=|\\=\\\u003c\\\u003c|\\=\\=|\\\u003e|\\\u003e\\=|\\\u003e\\\u003e|\\\u003e\\\u003e\\=|\\^|\\^\\^|\\|\\|)$"}]}}}]},"pragma":{"patterns":[{"name":"meta.preprocessor.haskell.hsig","begin":"\\{-#","end":"#-\\}","patterns":[{"name":"keyword.other.preprocessor.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))((?i:NOTINLINE CONSTRUCTORLIKE|NOINLINE CONSTRUCTORLIKE|INLINE CONSTRUCTORLIKE|SPECIALISE NOTINLINE|SPECIALIZE NOTINLINE|SPECIALISE NOINLINE|SPECIALIZE NOINLINE|NOTINLINE CONLIKE|SPECIALISE INLINE|SPECIALIZE INLINE|NOINLINE CONLIKE|VECTORISE SCALAR|VECTORIZE SCALAR|OPTIONS_HADDOCK|INLINE CONLIKE|OPTIONS_DERIVE|OPTIONS_CATCH|OPTIONS_NHC98|OPTIONS_HUGS|OVERLAPPABLE|NOVECTORISE|NOVECTORIZE|OPTIONS_GHC|OPTIONS_JHC|OPTIONS_YHC|OVERLAPPING|DEPRECATED|INCOHERENT|INLINEABLE|SPECIALISE|SPECIALIZE|GENERATED|INLINABLE|NOTINLINE|VECTORISE|VECTORIZE|CONTRACT|LANGUAGE|NOINLINE|NOUNPACK|OVERLAPS|INCLUDE|MINIMAL|OPTIONS|WARNING|CFILES|INLINE|SOURCE|UNPACK|CTYPE|RULES|CORE|LINE|ANN|SCC))(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}]},"quasi_quotes":{"patterns":[{"contentName":"quoted.quasiquotes.qq-$3.haskell.hsig","begin":"(\\[)((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))(\\|)","end":"(\\|)(\\])","beginCaptures":{"1":{"name":"punctuation.definition.quasiquotes.begin.haskell.hsig"},"2":{"name":"entity.name.tag.haskell.hsig","patterns":[{"include":"#module_name_prefix"}]}},"endCaptures":{"2":{"name":"punctuation.definition.quasiquotes.end.haskell.hsig"}}}]},"quoted_character":{"patterns":[{"name":"string.quoted.single.haskell.hsig","match":"(')((?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))(')","captures":{"1":{"name":"punctuation.definition.string.begin.haskell.hsig"},"2":{"patterns":[{"include":"#characters"}]},"3":{"name":"punctuation.definition.string.end.haskell.hsig"}}}]},"record_field_declaration":{"patterns":[{"name":"meta.record-field.type-declaration.haskell.hsig","contentName":"meta.type-signature.haskell.hsig","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))","end":"(?=(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))|})","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"patterns":[{"include":"#attribute_name"},{"include":"#infix_op"}]},"2":{"name":"keyword.other.double-colon.haskell.hsig"}}}]},"regular_import":{"patterns":[{"name":"meta.import.haskell.hsig","begin":"^([ \\t]*)(import)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#module_name"},{"include":"#module_exports"},{"match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(qualified|as|hiding)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell.hsig"}}},{"include":"#comments"}],"beginCaptures":{"2":{"name":"keyword.other.haskell.hsig"}}}]},"scoped_type":{"patterns":[{"match":"\\(((?\u003cparen\u003e(?:(?!\\(|\\)).|\\(\\g\u003cparen\u003e\\))*)(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))(?\u003cparen2\u003e(?:(?!\\(|\\)).|\\(\\g\u003cparen2\u003e\\))*))\\)","captures":{"1":{"patterns":[{"include":"#haskell_expr"}]}}},{"match":"((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))((?:(?!{-|(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=|--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))|$).|{-.*?-})*)","captures":{"1":{"name":"keyword.other.double-colon.haskell.hsig"},"2":{"name":"meta.type-signature.haskell.hsig","patterns":[{"include":"#type_signature"}]}}}]},"scoped_type_override":{"patterns":[{"match":"^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))((?:(?!{-|(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))).|{-.*?-})*)((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","captures":{"2":{"patterns":[{"include":"#identifier"}]},"3":{"name":"keyword.other.double-colon.haskell.hsig"},"4":{"name":"meta.type-signature.haskell.hsig","patterns":[{"include":"#type_signature"}]},"5":{"patterns":[{"include":"#assignment_op"},{"include":"#operator"}]}}}]},"shebang":{"patterns":[{"name":"comment.line.shebang.haskell.hsig","match":"^\\#\\!.*\\brunhaskell\\b.*$"}]},"string":{"patterns":[{"name":"string.quoted.double.haskell.hsig","begin":"\"","end":"\"","patterns":[{"include":"#characters"},{"begin":"\\\\\\s","end":"\\\\","patterns":[{"include":"#invalid"}],"beginCaptures":{"0":{"name":"markup.other.escape.newline.begin.haskell.hsig"}},"endCaptures":{"0":{"name":"markup.other.escape.newline.end.haskell.hsig"}}}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.haskell.hsig"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.haskell.hsig"}}}]},"type_alias":{"patterns":[{"name":"meta.declaration.type.type.haskell.hsig","contentName":"meta.type-signature.haskell.hsig","begin":"^([ \\t]*)(type)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#comments"},{"include":"#family_and_instance"},{"include":"#where"},{"include":"#assignment_op"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.type.haskell.hsig"}}}]},"type_application":{"patterns":[{"name":"other.type-application.haskell.hsig","match":"(\u003c?\\s+)(@)(\\'?\\((?\u003cparen\u003e(?:(?!\\(|\\)).|\\(\\g\u003cparen\u003e\\))*)\\)|\\'?\\[(?\u003cbrack\u003e(?:(?!\\[|\\]).|\\[\\g\u003cbrack\u003e\\])*)\\]|\"(?\u003cquot\u003e(?:(?!\"|\").|\"\\g\u003cquot\u003e\")*)\"|'(?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))'|\\S+)","captures":{"2":{"patterns":[{"include":"#operator"}]},"3":{"patterns":[{"include":"#type_signature"}]}}}]},"type_ctor":{"patterns":[{"name":"entity.name.tag.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.tag.prelude.$1.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(EQ|GT|LT|Left|Right|True|False)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}]},"type_ctor_alt":{"patterns":[{"contentName":"meta.type-signature.hsig","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s*","end":"^(?!^[ \\t]|[ \\t]*$)|(?=\\{|\\}|\\||(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))deriving(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))","patterns":[{"include":"#comments"},{"include":"#type_signature"}],"beginCaptures":{"1":{"patterns":[{"include":"#type_ctor"}]}}}]},"type_ctor_forall":{"patterns":[{"contentName":"meta.type-signature.hsig","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))forall(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!^[ \\t]|[ \\t]*$)|(?=\\{|\\}|\\||(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))deriving(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))","patterns":[{"include":"#comments"},{"match":"\\G.*?(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:=\u003e|⇒)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))","captures":{"0":{"patterns":[{"include":"#type_signature"}]}}},{"match":"\\G.*?\\.","captures":{"0":{"patterns":[{"include":"#type_signature"}]}}},{"include":"#big_arrow"},{"include":"#type_variable"},{"begin":"\\(","end":"\\)","patterns":[{"include":"#type_signature"}]},{"include":"#type_ctor_alt"}],"beginCaptures":{"0":{"patterns":[{"include":"#type_signature"}]}}}]},"type_name":{"patterns":[{"name":"entity.name.type.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"entity.other.inherited-class.prelude.$1.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Applicative|Bounded|Enum|Eq|Floating|Foldable|Fractional|Functor|Integral|Monad|Monoid|Num|Ord|Read|Real|RealFloat|RealFrac|Show|Traversable)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"name":"support.class.prelude.$1.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Either|FilePath|IO|IOError|Integer|Ordering|Rational|ReadS|ShowS|String|Bool|Char|Double|Float|Int|Just|Maybe|Nothing|Word)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}]},"type_signature":{"patterns":[{"include":"#pragma"},{"include":"#comments"},{"name":"keyword.other.forall.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))forall(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"include":"#quoted_character"},{"name":"other.promoted.haskell.hsig","match":"'(\\(\\))","captures":{"1":{"patterns":[{"include":"#unit"}]}}},{"include":"#unit"},{"name":"other.promoted.haskell.hsig","match":"'(\\[\\])","captures":{"1":{"patterns":[{"include":"#empty_list"}]}}},{"include":"#empty_list"},{"include":"#string"},{"include":"#arrow"},{"include":"#big_arrow"},{"name":"other.promoted.haskell.hsig","match":"'((?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+)","captures":{"1":{"patterns":[{"include":"#operator"}]}}},{"include":"#operator"},{"include":"#type_variable"},{"name":"other.promoted.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}'])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))'([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"patterns":[{"include":"#type_name"}]}}},{"include":"#type_name"},{"include":"#lit_num"}]},"type_variable":{"patterns":[{"name":"variable.other.generic-type.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"unit":{"patterns":[{"name":"constant.language.unit.haskell.hsig","match":"\\(\\)"}]},"via":{"patterns":[{"include":"#via_list"},{"include":"#via_list_newline"},{"include":"#via_indent"},{"include":"#via_simple"},{"include":"#via_keyword"}]},"via_indent":{"patterns":[{"name":"meta.via.haskell.hsig","begin":"^([ \\t]*)(via)\\s*","end":"^(?!\\1|[ \\t]*$)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.haskell.hsig"}}}]},"via_keyword":{"patterns":[{"name":"meta.via.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell.hsig"}}}]},"via_list":{"patterns":[{"name":"meta.via.haskell.hsig","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*\\(","end":"\\)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.other.haskell.hsig"}}}]},"via_list_newline":{"patterns":[{"name":"meta.via.haskell.hsig","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*","end":"$","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.other.haskell.hsig"}}}]},"via_simple":{"patterns":[{"name":"meta.via.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell.hsig"},"2":{"patterns":[{"include":"#type_signature"}]}}}]},"where":{"patterns":[{"name":"keyword.other.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}
|
1
|
+
{"name":"Haskell Module Signature","scopeName":"source.hsig","patterns":[{"include":"#hsig_source"}],"repository":{"arrow":{"patterns":[{"name":"keyword.other.arrow.haskell.hsig","match":"(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:-\u003e|→)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))"}]},"assignment_op":{"patterns":[{"match":"=","captures":{"0":{"name":"keyword.operator.assignment.haskell.hsig"}}}]},"attribute_name":{"patterns":[{"name":"entity.other.attribute-name.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"big_arrow":{"patterns":[{"name":"keyword.other.big-arrow.haskell.hsig","match":"(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:=\u003e|⇒)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))"}]},"block_comment":{"patterns":[{"name":"comment.block.haddock.haskell.hsig","begin":"\\{-\\s*[|^]","end":"-\\}","patterns":[{"include":"#block_comment"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.haddock.haskell.hsig"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.haddock.haskell.hsig"}},"applyEndPatternLast":true},{"name":"comment.block.haskell.hsig","begin":"\\{-","end":"-\\}","patterns":[{"include":"#block_comment"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.block.start.haskell.hsig"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.block.end.haskell.hsig"}},"applyEndPatternLast":true}]},"c_preprocessor":{"patterns":[{"name":"meta.preprocessor.c.hsig","begin":"^(?=#)","end":"(?\u003c!\\\\)(?=$)","patterns":[{"name":"keyword.control.c.hsig","match":"^#\\S+"}]}]},"characters":{"patterns":[{"name":"constant.character.escape.haskell.hsig","match":"\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])"},{"name":"constant.character.escape.octal.haskell.hsig","match":"(?:\\\\o[0-7]+)"},{"name":"constant.character.escape.hexadecimal.haskell.hsig","match":"(?:\\\\x[0-9A-Fa-f]+)"},{"name":"constant.character.escape.control.haskell.hsig","match":"(?:\\\\\\^[A-Z@\\[\\]\\\\^_])"}]},"class_decl":{"patterns":[{"name":"meta.declaration.class.haskell.hsig","begin":"^([ \\t]*)(class)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.class.haskell.hsig"}},"endCaptures":{"1":{"name":"keyword.other.haskell.hsig"}}}]},"comma":{"patterns":[{"name":"punctuation.separator.comma.haskell.hsig","match":","}]},"comments":{"patterns":[{"begin":"(^[ \\t]+)?(?=--+\\s+[|^])","end":"(?!\\G)","patterns":[{"begin":"(--+)\\s+([|^])(.*)","end":"^(?!--+)","patterns":[{"match":"^(--+)(.*)","captures":{"1":{"name":"punctuation.definition.comment.haskell.hsig"},"2":{"name":"comment.line.double-dash.haddock.haskell.hsig"}}}],"beginCaptures":{"1":{"name":"punctuation.definition.comment.haskell.hsig"},"2":{"name":"punctuation.definition.comment.haddock.haskell.hsig"},"3":{"name":"comment.line.double-dash.haddock.haskell.hsig"}}}]},{"begin":"(^[ \\t]+)?(?=--+(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))","end":"(?!\\G)","patterns":[{"name":"comment.line.double-dash.haskell.hsig","begin":"--+","end":"$","beginCaptures":{"0":{"name":"punctuation.definition.comment.haskell.hsig"}}}]},{"include":"#block_comment"}]},"common_toplevel":{"patterns":[{"include":"#class_decl"},{"include":"#instance_decl"},{"include":"#deriving_instance_decl"},{"include":"#foreign_import"},{"include":"#regular_import"},{"include":"#data_decl"},{"include":"#type_alias"},{"include":"#c_preprocessor"}]},"ctor_type_declaration":{"patterns":[{"name":"meta.ctor.type-declaration.haskell.hsig","contentName":"meta.type-signature.haskell.hsig","begin":"^([ \\t]*)(?:(?:((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))(?:\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"patterns":[{"include":"#type_ctor"},{"include":"#infix_op"}]},"3":{"name":"keyword.other.double-colon.haskell.hsig"}}}]},"data_decl":{"patterns":[{"name":"meta.declaration.type.data.haskell.hsig","begin":"^([ \\t]*)(data|newtype)\\s+((?:(?!(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:=|--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))|(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|{-).|{-.*?-})*)","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#comments"},{"include":"#string"},{"include":"#where"},{"include":"#deriving"},{"include":"#via"},{"include":"#assignment_op"},{"include":"#type_ctor_forall"},{"include":"#type_ctor_alt"},{"match":"\\|","captures":{"0":{"name":"punctuation.separator.pipe.haskell.hsig"}}},{"name":"meta.declaration.type.data.record.block.haskell.hsig","begin":"\\{","end":"\\}","patterns":[{"include":"#comments"},{"include":"#comma"},{"include":"#record_field_declaration"}],"beginCaptures":{"0":{"name":"keyword.operator.record.begin.haskell.hsig"}},"endCaptures":{"0":{"name":"keyword.operator.record.end.haskell.hsig"}}},{"include":"#ctor_type_declaration"}],"beginCaptures":{"2":{"name":"keyword.other.data.haskell.hsig"},"3":{"name":"meta.type-signature.haskell.hsig","patterns":[{"include":"#family_and_instance"},{"include":"#type_signature"}]}}}]},"deriving":{"patterns":[{"include":"#deriving_list"},{"include":"#deriving_simple"},{"include":"#deriving_keyword"}]},"deriving_instance_decl":{"patterns":[{"name":"meta.declaration.instance.deriving.haskell.hsig","contentName":"meta.type-signature.haskell.hsig","begin":"^([ \\t]*)(?:(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s+|(deriving)\\s+(via)\\s+(.*)\\s+)?(instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#pragma"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.haskell.hsig"},"3":{"patterns":[{"include":"#deriving_strategies"}]},"4":{"name":"keyword.other.haskell.hsig"},"5":{"name":"keyword.other.haskell.hsig"},"6":{"name":"meta.type-signature.haskell.hsig","patterns":[{"include":"#type_signature"}]},"7":{"name":"keyword.other.haskell.hsig"}}}]},"deriving_keyword":{"patterns":[{"name":"meta.deriving.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell.hsig"},"2":{"patterns":[{"include":"#deriving_strategies"}]}}}]},"deriving_list":{"patterns":[{"name":"meta.deriving.haskell.hsig","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s*\\(","end":"\\)","patterns":[{"match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"entity.other.inherited-class.haskell.hsig"}}}],"beginCaptures":{"1":{"name":"keyword.other.haskell.hsig"},"2":{"patterns":[{"include":"#deriving_strategies"}]}}}]},"deriving_simple":{"patterns":[{"name":"meta.deriving.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(deriving)(?:\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))?)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell.hsig"},"2":{"patterns":[{"include":"#deriving_strategies"}]},"3":{"name":"entity.other.inherited-class.haskell.hsig"}}}]},"deriving_strategies":{"patterns":[{"name":"meta.deriving.strategy.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(stock|newtype|anyclass)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell.hsig"}}}]},"double_colon_operator":{"patterns":[{"name":"keyword.other.double-colon.haskell.hsig","match":"(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))"}]},"empty_list":{"patterns":[{"name":"constant.language.empty-list.haskell.hsig","match":"\\[\\]"}]},"family_and_instance":{"patterns":[{"name":"keyword.other.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(family|instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"foreign_import":{"patterns":[{"name":"meta.foreign.haskell.hsig","begin":"^([ \\t]*)(foreign)\\s+(import|export)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"match":"(?:un)?safe","captures":{"0":{"name":"keyword.other.haskell.hsig"}}},{"include":"#function_type_declaration"},{"include":"#haskell_expr"},{"include":"#comments"}],"beginCaptures":{"2":{"name":"keyword.other.haskell.hsig"},"3":{"name":"keyword.other.haskell.hsig"}}}]},"function_name":{"patterns":[{"name":"entity.name.function.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"}]}}}]},"function_type_declaration":{"patterns":[{"name":"meta.function.type-declaration.haskell.hsig","contentName":"meta.type-signature.haskell.hsig","begin":"^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))","end":"^(?!\\1[ \\t]|[ \\t]*$)|(?=(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"patterns":[{"include":"#function_name"},{"include":"#infix_op"}]},"3":{"name":"keyword.other.double-colon.haskell.hsig"}}}]},"function_type_declaration_with_scoped_type":{"patterns":[{"include":"#scoped_type_override"},{"include":"#function_type_declaration"},{"include":"#multiline_type_declaration"}]},"haskell_expr":{"patterns":[{"include":"#infix_function"},{"include":"#unit"},{"include":"#empty_list"},{"include":"#quasi_quotes"},{"include":"#keywords"},{"include":"#pragma"},{"include":"#string"},{"include":"#newline_escape"},{"include":"#quoted_character"},{"include":"#comments"},{"include":"#infix_op"},{"include":"#comma"},{"include":"#lit_num"},{"include":"#scoped_type"},{"include":"#type_application"},{"include":"#operator"},{"include":"#identifier"},{"include":"#type_ctor"}]},"haskell_source":{"patterns":[{"include":"#shebang"},{"include":"#module_decl"},{"include":"#haskell_toplevel"}]},"haskell_toplevel":{"patterns":[{"include":"#liquidhaskell_annotation"},{"include":"#common_toplevel"},{"include":"#function_type_declaration_with_scoped_type"},{"include":"#haskell_expr"}]},"hsig_decl":{"patterns":[{"name":"meta.declaration.module.haskell.hsig","begin":"^([ \\t]*)(signature)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#comments"},{"include":"#module_name"},{"include":"#module_exports"},{"include":"#invalid"}],"beginCaptures":{"2":{"name":"keyword.other.haskell.hsig"}},"endCaptures":{"1":{"name":"keyword.other.haskell.hsig"}}}]},"hsig_source":{"patterns":[{"include":"#hsig_decl"},{"include":"#hsig_toplevel"}]},"hsig_toplevel":{"patterns":[{"include":"#common_toplevel"},{"include":"#function_type_declaration"},{"include":"#lazy_function_type_signature"},{"include":"#comments"}]},"identifier":{"patterns":[{"name":"identifier.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.function.prelude.$1.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(abs|acos|acosh|all|and|any|appendFile|asTypeOf|asin|asinh|atan|atan2|atanh|break|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|errorWithoutStackTrace|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldMap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|mappend|max|maxBound|maximum|maybe|mconcat|mempty|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|pure|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequenceA|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|traverse|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}]},"infix_function":{"patterns":[{"name":"keyword.operator.function.infix.haskell.hsig","match":"(`)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(`)","captures":{"1":{"name":"punctuation.definition.entity.haskell.hsig"},"2":{"name":"punctuation.definition.entity.haskell.hsig"}}}]},"infix_op":{"patterns":[{"name":"entity.name.function.operator.haskell.hsig","match":"(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.operator.prelude.haskell.hsig","match":"^\\((\\!\\!|\\$\\!|\\$|\\\u0026\\\u0026|\\*|\\*\\*|\\*\\\u003e|\\+|\\+\\+|\\-|\\.|\\/|\\/\\=|\\\u003c\\$|\\\u003c\\$\\\u003e|\\\u003c|\\\u003c\\*|\\\u003c\\*\\\u003e|\\\u003c\\=|\\=\\\u003c\\\u003c|\\=\\=|\\\u003e|\\\u003e\\=|\\\u003e\\\u003e|\\\u003e\\\u003e\\=|\\^|\\^\\^|\\|\\|)\\)$"}]}}}]},"instance_decl":{"patterns":[{"name":"meta.declaration.instance.haskell.hsig","contentName":"meta.type-signature.haskell.hsig","begin":"^([ \\t]*)(instance)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#pragma"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.haskell.hsig"}},"endCaptures":{"1":{"name":"keyword.other.haskell.hsig"}}}]},"invalid":{"patterns":[{"name":"invalid.illegal.character-not-allowed-here.haskell.hsig","match":"\\S+"}]},"keywords":{"patterns":[{"name":"keyword.other.$1.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(deriving|where|data|type|newtype|pattern)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"name":"keyword.operator.$1.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(infix[lr]?)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"name":"keyword.control.$1.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(do|if|then|else|case|of|let|in|default|mdo|rec|proc)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"lazy_function_type_signature":{"patterns":[{"name":"meta.function.type-declaration.haskell.hsig","contentName":"meta.type-signature.haskell.hsig","begin":"^([ \\t]*)(((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*))\\s*$","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#double_colon_operator"},{"include":"#type_signature"}],"beginCaptures":{"2":{"patterns":[{"include":"#function_name"},{"include":"#infix_op"}]}}}]},"liquidhaskell_annotation":{"patterns":[{"name":"block.liquidhaskell.hsig","contentName":"block.liquidhaskell.annotation.hsig","begin":"\\{-@(?!#)","end":"@-\\}","patterns":[{"include":"annotation.liquidhaskell.haskell"}]}]},"lit_num":{"patterns":[{"name":"constant.numeric.hexfloat.haskell.hsig","match":"0[xX][0-9a-fA-F_]*(?:\\.[0-9a-fA-F_]+(?:[pP][+-]?[0-9_]+)?|[pP][+-]?[0-9_]+)"},{"name":"constant.numeric.hexadecimal.haskell.hsig","match":"0[xX][_0-9a-fA-F]+"},{"name":"constant.numeric.octal.haskell.hsig","match":"0[oO][_0-7]+"},{"name":"constant.numeric.binary.haskell.hsig","match":"0[bB][_01]+"},{"name":"constant.numeric.float.haskell.hsig","match":"[0-9][0-9_]*(?:\\.[0-9_]+(?:[eE][+-]?[0-9_]+)?|[eE][+-]?[0-9_]+)"},{"name":"constant.numeric.decimal.haskell.hsig","match":"[0-9][_0-9]*"}]},"module_decl":{"patterns":[{"name":"meta.declaration.module.haskell.hsig","begin":"^([ \\t]*)(module)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(where)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#pragma"},{"include":"#comments"},{"include":"#module_name"},{"include":"#module_exports"},{"include":"#invalid"}],"beginCaptures":{"2":{"name":"keyword.other.haskell.hsig"}},"endCaptures":{"1":{"name":"keyword.other.haskell.hsig"}}}]},"module_exports":{"patterns":[{"name":"meta.declaration.exports.haskell.hsig","begin":"\\(","end":"\\)","patterns":[{"include":"#comments"},{"include":"#c_preprocessor"},{"begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(module)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","patterns":[{"include":"#invalid"}],"beginCaptures":{"1":{"name":"keyword.other.haskell.hsig"}},"endCaptures":{"1":{"name":"support.other.module.haskell.hsig"}}},{"include":"#pattern_name"},{"include":"#type_exportImport"},{"include":"#function_name"},{"include":"#type_name"},{"include":"#comma"},{"include":"#infix_op"},{"name":"meta.other.constructor-list.haskell.hsig","begin":"\\(","end":"\\)","patterns":[{"include":"#comments"},{"include":"#c_preprocessor"},{"include":"#type_ctor"},{"include":"#attribute_name"},{"include":"#comma"},{"name":"keyword.operator.wildcard.haskell.hsig","match":"\\.\\."},{"include":"#infix_op"}]}],"applyEndPatternLast":true}]},"module_name":{"patterns":[{"name":"support.other.module.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"module_name_prefix":{"patterns":[{"name":"support.other.module.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\."}]},"multiline_type_declaration":{"patterns":[{"name":"meta.multiline.type-declaration.haskell.hsig","contentName":"meta.type-signature.haskell.hsig","begin":"^([ \\t]*)((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","end":"^(?!\\1|[ \\t]*$)|(?=(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.double-colon.haskell.hsig"}}}]},"newline_escape":{"patterns":[{"name":"markup.other.escape.newline.haskell.hsig","match":"\\\\$"}]},"operator":{"patterns":[{"name":"keyword.operator.haskell.hsig","match":"(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.operator.prelude.haskell.hsig","match":"^(\\!\\!|\\$\\!|\\$|\\\u0026\\\u0026|\\*|\\*\\*|\\*\\\u003e|\\+|\\+\\+|\\-|\\.|\\/|\\/\\=|\\\u003c\\$|\\\u003c\\$\\\u003e|\\\u003c|\\\u003c\\*|\\\u003c\\*\\\u003e|\\\u003c\\=|\\=\\\u003c\\\u003c|\\=\\=|\\\u003e|\\\u003e\\=|\\\u003e\\\u003e|\\\u003e\\\u003e\\=|\\^|\\^\\^|\\|\\|)$"}]}}}]},"pattern_name":{"patterns":[{"name":"meta.declaration.export.qualified.pattern.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(pattern)\\s+([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))","captures":{"1":{"patterns":[{"include":"#keywords"}]},"2":{"patterns":[{"include":"#type_ctor"},{"include":"#infix_op"}]}}}]},"pragma":{"patterns":[{"name":"meta.preprocessor.haskell.hsig","begin":"\\{-#","end":"#-\\}","patterns":[{"name":"keyword.other.preprocessor.$1.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))((?i:NOTINLINE CONSTRUCTORLIKE|NOINLINE CONSTRUCTORLIKE|INLINE CONSTRUCTORLIKE|SPECIALISE NOTINLINE|SPECIALIZE NOTINLINE|SPECIALISE NOINLINE|SPECIALIZE NOINLINE|NOTINLINE CONLIKE|SPECIALISE INLINE|SPECIALIZE INLINE|NOINLINE CONLIKE|VECTORISE SCALAR|VECTORIZE SCALAR|OPTIONS_HADDOCK|INLINE CONLIKE|OPTIONS_DERIVE|OPTIONS_CATCH|OPTIONS_NHC98|OPTIONS_HUGS|OVERLAPPABLE|NOVECTORISE|NOVECTORIZE|OPTIONS_GHC|OPTIONS_JHC|OPTIONS_YHC|OVERLAPPING|DEPRECATED|INCOHERENT|INLINEABLE|SPECIALISE|SPECIALIZE|GENERATED|INLINABLE|NOTINLINE|VECTORISE|VECTORIZE|COMPLETE|CONTRACT|LANGUAGE|NOINLINE|NOUNPACK|OVERLAPS|INCLUDE|MINIMAL|OPTIONS|WARNING|CFILES|COLUMN|INLINE|SOURCE|UNPACK|CTYPE|RULES|CORE|LINE|ANN|SCC))(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}]},"quasi_quotes":{"patterns":[{"contentName":"quoted.quasiquotes.qq-$3.haskell.hsig","begin":"(\\[)((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))(\\|)","end":"(\\|)(\\])","beginCaptures":{"1":{"name":"punctuation.definition.quasiquotes.begin.haskell.hsig"},"2":{"name":"entity.name.tag.haskell.hsig","patterns":[{"include":"#module_name_prefix"}]}},"endCaptures":{"2":{"name":"punctuation.definition.quasiquotes.end.haskell.hsig"}}}]},"quoted_character":{"patterns":[{"name":"string.quoted.single.haskell.hsig","match":"(')((?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))(')","captures":{"1":{"name":"punctuation.definition.string.begin.haskell.hsig"},"2":{"patterns":[{"include":"#characters"}]},"3":{"name":"punctuation.definition.string.end.haskell.hsig"}}}]},"record_field_declaration":{"patterns":[{"name":"meta.record-field.type-declaration.haskell.hsig","contentName":"meta.type-signature.haskell.hsig","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))","end":"(?=(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))|})","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"patterns":[{"include":"#attribute_name"},{"include":"#infix_op"}]},"2":{"name":"keyword.other.double-colon.haskell.hsig"}}}]},"regular_import":{"patterns":[{"name":"meta.import.haskell.hsig","begin":"^([ \\t]*)(import)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#module_name"},{"include":"#module_exports"},{"match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(qualified|as|hiding)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell.hsig"}}},{"include":"#comments"}],"beginCaptures":{"2":{"name":"keyword.other.haskell.hsig"}}}]},"scoped_type":{"patterns":[{"match":"\\(((?\u003cparen\u003e(?:(?!\\(|\\)).|\\(\\g\u003cparen\u003e\\))*)(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))(?\u003cparen2\u003e(?:(?!\\(|\\)).|\\(\\g\u003cparen2\u003e\\))*))\\)","captures":{"1":{"patterns":[{"include":"#haskell_expr"}]}}},{"match":"((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))((?:(?!{-|(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=|--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))|$).|{-.*?-})*)","captures":{"1":{"name":"keyword.other.double-colon.haskell.hsig"},"2":{"name":"meta.type-signature.haskell.hsig","patterns":[{"include":"#type_signature"}]}}}]},"scoped_type_override":{"patterns":[{"match":"^([ \\t]*)(?:(?:((?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))(?:(?:\\s*,\\s*)(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\))))*)\\s*((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:::|∷)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))))((?:(?!{-|(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:--+)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))).|{-.*?-})*)((?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:\u003c-|=)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))))","captures":{"2":{"patterns":[{"include":"#identifier"}]},"3":{"name":"keyword.other.double-colon.haskell.hsig"},"4":{"name":"meta.type-signature.haskell.hsig","patterns":[{"include":"#type_signature"}]},"5":{"patterns":[{"include":"#assignment_op"},{"include":"#operator"}]}}}]},"shebang":{"patterns":[{"name":"comment.line.shebang.haskell.hsig","match":"^\\#\\!.*\\brunhaskell\\b.*$"}]},"string":{"patterns":[{"name":"string.quoted.double.haskell.hsig","begin":"\"","end":"\"","patterns":[{"include":"#characters"},{"begin":"\\\\\\s","end":"\\\\","patterns":[{"include":"#invalid"}],"beginCaptures":{"0":{"name":"markup.other.escape.newline.begin.haskell.hsig"}},"endCaptures":{"0":{"name":"markup.other.escape.newline.end.haskell.hsig"}}}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.haskell.hsig"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.haskell.hsig"}}}]},"type_alias":{"patterns":[{"name":"meta.declaration.type.type.haskell.hsig","contentName":"meta.type-signature.haskell.hsig","begin":"^([ \\t]*)(type)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!\\1[ \\t]|[ \\t]*$)","patterns":[{"include":"#comments"},{"include":"#family_and_instance"},{"include":"#where"},{"include":"#assignment_op"},{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.type.haskell.hsig"}}}]},"type_application":{"patterns":[{"name":"other.type-application.haskell.hsig","match":"(\u003c?\\s+)(@)(\\'?\\((?\u003cparen\u003e(?:(?!\\(|\\)).|\\(\\g\u003cparen\u003e\\))*)\\)|\\'?\\[(?\u003cbrack\u003e(?:(?!\\[|\\]).|\\[\\g\u003cbrack\u003e\\])*)\\]|\"(?\u003cquot\u003e(?:(?!\"|\").|\"\\g\u003cquot\u003e\")*)\"|'(?:[\\ -\\[\\]-~]|\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\\u0026])|(?:\\\\o[0-7]+)|(?:\\\\x[0-9A-Fa-f]+)|(?:\\\\\\^[A-Z@\\[\\]\\\\^_])|(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))'|\\S+)","captures":{"2":{"patterns":[{"include":"#operator"}]},"3":{"patterns":[{"include":"#type_signature"}]}}}]},"type_ctor":{"patterns":[{"name":"entity.name.tag.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"support.tag.prelude.$1.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(EQ|GT|LT|Left|Right|True|False)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}]},"type_ctor_alt":{"patterns":[{"contentName":"meta.type-signature.hsig","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s*","end":"^(?!^[ \\t]|[ \\t]*$)|(?=\\{|\\}|\\||(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))deriving(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))","patterns":[{"include":"#comments"},{"include":"#type_signature"}],"beginCaptures":{"1":{"patterns":[{"include":"#type_ctor"}]}}}]},"type_ctor_forall":{"patterns":[{"contentName":"meta.type-signature.hsig","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))forall(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","end":"^(?!^[ \\t]|[ \\t]*$)|(?=\\{|\\}|\\||(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))deriving(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])))","patterns":[{"include":"#comments"},{"match":"\\G.*?(?:(?\u003c!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"'])))(?:=\u003e|⇒)(?!(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))))","captures":{"0":{"patterns":[{"include":"#type_signature"}]}}},{"match":"\\G.*?\\.","captures":{"0":{"patterns":[{"include":"#type_signature"}]}}},{"include":"#big_arrow"},{"include":"#type_variable"},{"begin":"\\(","end":"\\)","patterns":[{"include":"#type_signature"}]},{"include":"#type_ctor_alt"}],"beginCaptures":{"0":{"patterns":[{"include":"#type_signature"}]}}}]},"type_exportImport":{"patterns":[{"name":"meta.declaration.export.qualified.type.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(type)\\s+([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))|(?:\\((?!--+\\)|\\.\\.\\))(?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+\\)))","captures":{"1":{"patterns":[{"include":"#keywords"}]},"2":{"patterns":[{"include":"#type_name"},{"include":"#operator"}]}}}]},"type_name":{"patterns":[{"name":"entity.name.type.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"0":{"patterns":[{"include":"#module_name_prefix"},{"name":"entity.other.inherited-class.prelude.$1.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Applicative|Bounded|Enum|Eq|Floating|Foldable|Fractional|Functor|Integral|Monad|Monoid|Num|Ord|Read|Real|RealFloat|RealFrac|Show|Traversable)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"name":"support.class.prelude.$1.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(Either|FilePath|IO|IOError|Integer|Ordering|Rational|ReadS|ShowS|String|Bool|Char|Double|Float|Int|Just|Maybe|Nothing|Word)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}]},"type_signature":{"patterns":[{"include":"#pragma"},{"include":"#comments"},{"name":"keyword.other.forall.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))forall(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"},{"include":"#quoted_character"},{"name":"other.promoted.haskell.hsig","match":"'(\\(\\))","captures":{"1":{"patterns":[{"include":"#unit"}]}}},{"include":"#unit"},{"name":"other.promoted.haskell.hsig","match":"'(\\[\\])","captures":{"1":{"patterns":[{"include":"#empty_list"}]}}},{"include":"#empty_list"},{"include":"#string"},{"include":"#arrow"},{"include":"#big_arrow"},{"name":"other.promoted.haskell.hsig","match":"'((?:(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?(?:[\\p{S}\\p{P}](?\u003c![(),;\\[\\]`{}_\"']))+)","captures":{"1":{"patterns":[{"include":"#operator"}]}}},{"include":"#operator"},{"include":"#type_variable"},{"name":"other.promoted.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}'])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))'([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"patterns":[{"include":"#type_name"}]}}},{"include":"#type_name"},{"include":"#lit_num"}]},"type_variable":{"patterns":[{"name":"variable.other.generic-type.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]},"unit":{"patterns":[{"name":"constant.language.unit.haskell.hsig","match":"\\(\\)"}]},"via":{"patterns":[{"include":"#via_list"},{"include":"#via_list_newline"},{"include":"#via_indent"},{"include":"#via_simple"},{"include":"#via_keyword"}]},"via_indent":{"patterns":[{"name":"meta.via.haskell.hsig","begin":"^([ \\t]*)(via)\\s*","end":"^(?!\\1|[ \\t]*$)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"2":{"name":"keyword.other.haskell.hsig"}}}]},"via_keyword":{"patterns":[{"name":"meta.via.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell.hsig"}}}]},"via_list":{"patterns":[{"name":"meta.via.haskell.hsig","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*\\(","end":"\\)","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.other.haskell.hsig"}}}]},"via_list_newline":{"patterns":[{"name":"meta.via.haskell.hsig","begin":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*","end":"$","patterns":[{"include":"#type_signature"}],"beginCaptures":{"1":{"name":"keyword.other.haskell.hsig"}}}]},"via_simple":{"patterns":[{"name":"meta.via.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))(via)\\s*([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))","captures":{"1":{"name":"keyword.other.haskell.hsig"},"2":{"patterns":[{"include":"#type_signature"}]}}}]},"where":{"patterns":[{"name":"keyword.other.haskell.hsig","match":"(?:(?=[\\p{Ll}_\\p{Lu}\\p{Lt}])(?\u003c![\\p{Ll}_\\p{Lu}\\p{Lt}']))where(?:(?\u003c=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']))"}]}}}
|
data/grammars/source.hy.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"name":"Hy","scopeName":"source.hy","patterns":[{"include":"#comment"},{"include":"#shebang
|
1
|
+
{"name":"Hy","scopeName":"source.hy","patterns":[{"include":"#comment"},{"include":"#shebang"},{"include":"#quoted-sexp"},{"include":"#sexp"},{"include":"#keyfn"},{"include":"#string"},{"include":"#vector"},{"include":"#set"},{"include":"#map"},{"include":"#regexp"},{"include":"#var"},{"include":"#constants"},{"include":"#dynamic-variables"},{"include":"#metadata"},{"include":"#namespace-symbol"},{"include":"#symbol"}],"repository":{"comment":{"name":"comment.line.semicolon.hy","begin":"(?\u003c!\\\\);(;{1,3})?","end":"$","patterns":[{"name":"keyword.codetag.hy","match":"(?\u003c=;)\\s+\\K(TODO|FIXME|XXX|BUG|HACK|NOTE):"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.hy"}}},"constants":{"patterns":[{"name":"constant.language.null.hy","match":"(None)(?=(\\s|\\)|\\]|\\}))"},{"name":"constant.language.boolean.hy","match":"(True|False)"},{"name":"constant.numeric.fraction.hy","match":"(-?\\d+/\\d+)"},{"name":"constant.numeric.hexadecimal.hy","match":"(-?0[xX][0-9a-fA-F]+)"},{"name":"constant.numeric.octal.hy","match":"(-?0[oO][0-7]+)"},{"name":"constant.numeric.float.hy","match":"(-?\\d+\\.\\d+([eE][+-]?\\d+)?)"},{"name":"constant.numeric.complex.hy","match":"((-?\\d+(\\.(\\d+([eE][+-]?\\d+)?)?)?)[+-](\\d+(\\.(\\d+([eE][+-]?\\d+)?)?)?)?[jJ])"},{"name":"constant.numeric.int.hy","match":"(-?\\d+)"},{"include":"#keyword"}]},"dynamic-variables":{"name":"meta.symbol.dynamic.hy","match":"\\*[\\w\\.\\-\\_\\:\\+\\=\\\u003e\\\u003c\\!\\?\\d]+\\*"},"keyfn":{"patterns":[{"name":"keyword.control.hy","match":"(?\u003c=(\\s|\\(|\\[|\\{))(break|continue)|((if|set[vx])(-[-\\p{Ll}\\?]*)?|(unless|when|while|[dgls]?for)(-[-\\p{Ll}]*)?|cond|do|fn(/a)?|raise[\\p{Ll}\\-]*|try|except|finally|return|yield)(?=(\\s|\\)|\\]|\\}))"},{"name":"keyword.operator.hy","match":"(?\u003c=(\\s|\\(|\\[|\\{))(and|cmp|not|or|xor)(?=(\\s|\\)|\\]|\\}))"},{"name":"keyword.other.hy","match":"^#@(?=\\()|(?\u003c=(\\s|\\(|\\[|\\{))(\\.\\s|__\\p{Ll}+__|(as)?-\u003e\u003e?|as(sert)?|async|await|def(class|n(/a)?|main|macro(/g\\!|\\!)?|tag)|del|doto|eval-(and|when)-compile|gensym|in|import|pys?|quasiquote|quote|require|unquote(-splice)?|with(-decorator|-gensyms|/a)?|yield-from)(?=(\\s|\\)|\\]|\\}))"},{"name":"storage.modifier.hy","match":"(?\u003c=(\\s|\\(|\\[|\\{))(global|nonlocal)(?=(\\s|\\)|\\]|\\}))"}]},"keyword":{"name":"constant.keyword.hy","match":"(?\u003c=(\\s|\\(|\\[|\\{)):[\\w\\#\\.\\-\\_\\:\\+\\=\\\u003e\\\u003c\\/\\!\\?\\*]+(?=(\\s|\\)|\\]|\\}|\\,))"},"map":{"name":"meta.map.hy","begin":"(\\{)","end":"(\\}(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\})","patterns":[{"include":"$self"}],"beginCaptures":{"1":{"name":"punctuation.section.map.begin.hy"}},"endCaptures":{"1":{"name":"punctuation.section.map.end.trailing.hy"},"2":{"name":"punctuation.section.map.end.hy"}}},"metadata":{"patterns":[{"name":"meta.metadata.map.hy","begin":"(\\^\\{)","end":"(\\}(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\})","patterns":[{"include":"$self"}],"beginCaptures":{"1":{"name":"punctuation.section.metadata.map.begin.hy"}},"endCaptures":{"1":{"name":"punctuation.section.metadata.map.end.trailing.hy"},"2":{"name":"punctuation.section.metadata.map.end.hy"}}},{"name":"meta.metadata.simple.hy","begin":"(\\^)","end":"(\\s)","patterns":[{"include":"#keyword"},{"include":"$self"}]}]},"namespace-symbol":{"patterns":[{"match":"([\\p{L}\\.\\-\\_\\+\\=\\\u003e\\\u003c\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\\u003e\\\u003c\\!\\?\\*\\d]*)/","captures":{"1":{"name":"meta.symbol.namespace.hy"}}}]},"quoted-sexp":{"name":"meta.quoted-expression.hy","begin":"(['`]\\()","end":"(\\))$|(\\)(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\))","patterns":[{"include":"$self"}],"beginCaptures":{"1":{"name":"punctuation.section.expression.begin.hy"}},"endCaptures":{"1":{"name":"punctuation.section.expression.end.trailing.hy"},"2":{"name":"punctuation.section.expression.end.trailing.hy"},"3":{"name":"punctuation.section.expression.end.hy"}}},"regexp":{"name":"string.regexp.hy","begin":"#\"","end":"\"","patterns":[{"include":"#regexp_escaped_char"}],"beginCaptures":{"0":{"name":"punctuation.definition.regexp.begin.hy"}},"endCaptures":{"0":{"name":"punctuation.definition.regexp.end.hy"}}},"regexp_escaped_char":{"name":"constant.character.escape.hy","match":"\\\\."},"set":{"name":"meta.set.hy","begin":"(\\#\\{)","end":"(\\}(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\})","patterns":[{"include":"$self"}],"beginCaptures":{"1":{"name":"punctuation.section.set.begin.hy"}},"endCaptures":{"1":{"name":"punctuation.section.set.end.trailing.hy"},"2":{"name":"punctuation.section.set.end.hy"}}},"sexp":{"name":"meta.expression.hy","begin":"(\\()","end":"(\\))$|(\\)(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\))","patterns":[{"name":"meta.definition.global.hy","begin":"(?\u003c=\\()(set[vx]|def[\\w\\d._:+=\u003e\u003c!?*-]*|[\\w._:+=\u003e\u003c!?*-][\\w\\d._:+=\u003e\u003c!?*-]*/def[\\w\\d._:+=\u003e\u003c!?*-]*)\\s+","end":"(?=\\))","patterns":[{"include":"#metadata"},{"include":"#dynamic-variables"},{"name":"entity.global.hy","match":"([\\p{L}\\.\\-\\_\\+\\=\\\u003e\\\u003c\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\\u003e\\\u003c\\!\\?\\*\\d]*)"},{"include":"$self"}],"beginCaptures":{"1":{"name":"keyword.control.hy"}}},{"include":"#keyfn"},{"include":"#constants"},{"include":"#vector"},{"include":"#map"},{"include":"#set"},{"include":"#sexp"},{"match":"(?\u003c=\\()(.+?)(?=\\s|\\))","patterns":[{"include":"$self"}],"captures":{"1":{"name":"entity.name.function.hy"}}},{"include":"$self"}],"beginCaptures":{"1":{"name":"punctuation.section.expression.begin.hy"}},"endCaptures":{"1":{"name":"punctuation.section.expression.end.trailing.hy"},"2":{"name":"punctuation.section.expression.end.trailing.hy"},"3":{"name":"punctuation.section.expression.end.hy"}}},"shebang":{"name":"comment.line.shebang.hy","begin":"^(#!)","end":"$","beginCaptures":{"1":{"name":"punctuation.definition.comment.shebang.hy"}}},"string":{"patterns":[{"name":"string.quoted.double.hy","begin":"(?\u003c!\\\\)(\")","end":"(\")","patterns":[{"name":"constant.character.escape.hy","match":"\\\\."}],"beginCaptures":{"1":{"name":"punctuation.definition.string.begin.hy"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.hy"}}},{"name":"string.quoted.bracket-string.hy","begin":"(?\u003c!\\\\)(\\#\\[\\[)","end":"(\\]\\])","beginCaptures":{"1":{"name":"punctuation.definition.string.begin.hy"}},"endCaptures":{"1":{"name":"punctuation.definition.string.end.hy"}}}]},"symbol":{"patterns":[{"name":"meta.symbol.hy","match":"([\\p{L}\\.\\-\\_\\+\\=\\\u003e\\\u003c\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\\u003e\\\u003c\\!\\?\\*\\d]*)"}]},"var":{"name":"meta.var.hy","match":"(?\u003c=(\\s|\\(|\\[|\\{)\\#)'[\\w\\.\\-\\_\\:\\+\\=\\\u003e\\\u003c\\/\\!\\?\\*]+(?=(\\s|\\)|\\]|\\}))"},"vector":{"name":"meta.vector.hy","begin":"(\\[)","end":"(\\](?=[\\}\\]\\)\\s]*(?:;|$)))|(\\])","patterns":[{"include":"$self"}],"beginCaptures":{"1":{"name":"punctuation.section.vector.begin.hy"}},"endCaptures":{"1":{"name":"punctuation.section.vector.end.trailing.hy"},"2":{"name":"punctuation.section.vector.end.hy"}}}}}
|