`, "name": "string.quoted.single.haskell" }, "comma": { "match": ",", "name": "punctuation.separator.comma.haskell" }, "comment_like": { "patterns": [{ "include": "#cpp" }, { "include": "#pragma" }, { "include": "#comments" }] }, "comments": { "patterns": [{ "begin": "^(\\s*)(--\\s[\\|\\$])", "beginCaptures": { "2": { "name": "punctuation.whitespace.comment.leading.haskell" } }, "end": "(?=^(?!\\1--+(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])))","name":"comment.block.documentation.haskell"},{"begin":"(^[ \\t]+)?(--\\s[\\^\\*])","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.haskell"}},"end":"\\n","name":"comment.line.documentation.haskell"},{"applyEndPatternLast":1,"begin":"\\{-\\s?[\\|\\$\\*\\^]","captures":{"0":{"name":"punctuation.definition.comment.haskell"}},"end":"-\\}","name":"comment.block.documentation.haskell","patterns":[{"include":"#block_comment"}]},{"begin":"(^[ \\t]+)?(?=--+(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.haskell"}},"comment":"Operators may begin with '--' as long as they are not entirely composed of '-' characters. This means comments can't be immediately followed by an allowable operator character.","end":"(?!\\G)","patterns":[{"begin":"--","beginCaptures":{"0":{"name":"punctuation.definition.comment.haskell"}},"end":"\\n","name":"comment.line.double-dash.haskell"}]},{"include":"#block_comment"}]},"context":{"captures":{"1":{"patterns":[{"include":"#comment_like"},{"include":"#type_signature"}]},"2":{"name":"keyword.operator.big-arrow.haskell"}},"match":"(?x)\n(.*)\n(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n(=>|\u21D2)\n(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n"},"cpp":{"captures":{"1":{"name":"punctuation.definition.preprocessor.c"}},"comment":`In addition to Haskell's "native" syntax, GHC permits the C preprocessor to be run on a source file.`,"match":"^(#).*$","name":"meta.preprocessor.c"},"data_constructor":{"match":"\\b(?<!')[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?![\\.'\\w])","name":"constant.other.haskell"},"deriving":{"patterns":[{"begin":"^(\\s*)(deriving)\\s+(?:(via|stock|newtype|anyclass)\\s+)?","beginCaptures":{"2":{"name":"keyword.other.deriving.haskell"},"3":{"name":"keyword.other.deriving.strategy.$3.haskell"}},"end":"(?x)\n\n(?=\\}|;)\n|^(?!\n\\1\\s+\\S\n| \\s*\n(?: $\n|\\{-[^@]\n|--+\n(?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$)\n\n\n)","name":"meta.deriving.haskell","patterns":[{"include":"#comment_like"},{"match":"(?<!')\\b(instance)\\b(?!')","name":"keyword.other.instance.haskell"},{"captures":{"1":{"name":"keyword.other.deriving.strategy.$1.haskell"}},"match":"(?<!')\\b(via|stock|newtype|anyclass)\\b(?!')"},{"include":"#type_signature"}]},{"begin":"(deriving)(?:\\s+(stock|newtype|anyclass))?\\s*(\\()","beginCaptures":{"1":{"name":"keyword.other.deriving.haskell"},"2":{"name":"keyword.other.deriving.strategy.$2.haskell"},"3":{"name":"punctuation.paren.haskell"}},"end":"(\\))","endCaptures":{"1":{"name":"punctuation.paren.haskell"}},"name":"meta.deriving.haskell","patterns":[{"include":"#type_signature"}]},{"captures":{"1":{"name":"keyword.other.deriving.haskell"},"2":{"name":"keyword.other.deriving.strategy.$2.haskell"},"3":{"patterns":[{"include":"#type_signature"}]},"5":{"name":"keyword.other.deriving.strategy.via.haskell"},"6":{"patterns":[{"include":"#type_signature"}]}},"match":"(?x)\n(deriving)(?:\\s+(stock|newtype|anyclass))?\\s+\n([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n(\\s+(via)\\s+(.*)$)?\n","name":"meta.deriving.haskell"},{"match":"(?<!')\\b(via)\\b(?!')","name":"keyword.other.deriving.strategy.via.haskell"}]},"double_colon":{"captures":{"1":{"name":"keyword.operator.double-colon.haskell"}},"match":"\\s*(::|\u2237)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\\s*"},"export_constru