/
.hlint.yaml
127 lines (109 loc) · 4.65 KB
/
.hlint.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# For more information about this file, see
# https://github.com/ndmitchell/hlint/blob/master/data/hlint.yaml
# and
# https://github.com/ndmitchell/hlint/blob/master/data/default.yaml
- arguments: [-XNoMagicHash]
# disabled rules
- ignore: {name: "Use record patterns"}
# enabled rules
- warn: {name: "Use module export list"}
- warn: {name: "Use explicit module export list"}
- group:
name: generalise
enabled: true
- group:
name: generalise-for-conciseness
enabled: true
# custom rules
- package:
name: containers
modules:
- import Data.Set as Set
- package:
name: parser-combinators
modules:
- import Control.Monad.Combinators
- package:
name: megaparsec
modules:
- import Text.Megaparsec
- group:
name: default
enabled: true
imports:
- package base
rules:
- warn: {lhs: "- a", rhs: "negate a", name: "Use negate"}
- warn: {lhs: "return a", rhs: "pure a", name: "Use pure"}
- group:
name: pretty-printer
enabled: true
imports:
- package base
rules:
- warn: {lhs: "printIntersperse a (fmap prettyPrint b)", rhs: "prettyPrintList a b"}
- warn: {lhs: "(a `printAppend` b) `printAppend` c", rhs: "a `printAppend` (b `printAppend` c)"}
- warn: {lhs: "a `printAppend` printConcat x", rhs: "printConcat (a : x)"}
- warn: {lhs: "a `printAppend` b `printAppend` c `printAppend` d", rhs: "printConcat [a, b, c, d]"}
- warn: {lhs: "printString (show a)", rhs: "printShowable a"}
- group:
name: parser-combinators
enabled: true
imports:
- package base
- package parser-combinators
rules:
- warn: {lhs: "a *> b <* c", rhs: "Control.Monad.Combinators.between a c b"}
- warn: {lhs: "a <|> pure b", rhs: "Control.Monad.Combinators.option a b"}
- warn: {lhs: "a <|> return b", rhs: "Control.Monad.Combinators.option a b"}
- warn: {lhs: "a <|> Control.Monad.Combinators.choice x", rhs: "Control.Monad.Combinators.choice (a : x)"}
- warn: {lhs: "a <|> b <|> c", rhs: "Control.Monad.Combinators.choice [a, b, c]"}
- warn: {lhs: "(:) <$> a <*> Control.Monad.Combinators.many a", rhs: "Control.Monad.Combinators.some a"}
- warn: {lhs: "(:) <$> a <* b <*> Control.Monad.Combinators.endBy a b", rhs: "Control.Monad.Combinators.endBy1 a b"}
- warn: {lhs: "(:) <$> a <*> Control.Monad.Combinators.manyTill a b", rhs: "Control.Monad.Combinators.someTill a b"}
- warn: {lhs: "void (Control.Monad.Combinators.many a)", rhs: "Control.Monad.Combinators.skipMany a"}
- warn: {lhs: "void (Control.Monad.Combinators.some a)", rhs: "Control.Monad.Combinators.skipSome a"}
- warn: {lhs: "void (Control.Monad.Combinators.count i a)", rhs: "Control.Monad.Combinators.skipCount i a"}
- warn: {lhs: "void (Control.Monad.Combinators.manyTill a b)", rhs: "Control.Monad.Combinators.skipManyTill a b"}
- warn: {lhs: "void (Control.Monad.Combinators.someTill a b)", rhs: "Control.Monad.Combinators.skipSomeTill a b"}
- warn: {lhs: "(:|) <$> a <*> Control.Monad.Combinators.many a", rhs: "Control.Monad.Combinators.NonEmpty.some a"}
- warn: {lhs: "(:|) <$> a <* b <*> Control.Monad.Combinators.endBy a b", rhs: "Control.Monad.Combinators.NonEmpty.endBy1 a b"}
- warn: {lhs: "(:|) <$> a <*> Control.Monad.Combinators.manyTill a b", rhs: "Control.Monad.Combinators.NonEmpty.someTill a b"}
- group:
name: megaparsec
enabled: true
imports:
- package base
- package megaparsec
rules:
- warn: {lhs: "oneOf [a]", rhs: "single a"}
- warn: {lhs: "oneOf [a, b]", rhs: "satisfy (\\x -> x == a || x == b)"}
- warn: {lhs: "noneOf [a]", rhs: "anySingleBut a"}
- warn: {lhs: "noneOf [a, b]", rhs: "satisfy (\\x -> x /= a && x /= b)"}
- group:
name: lens
enabled: true
imports:
- package base
- package containers
- package lens
rules:
- warn: {lhs: "(^. partsOf a)", rhs: "(^.. a)"}
- warn: {lhs: "traverse (a %%~ b)", rhs: "(each . a) %%~ b"}
## Enable this rule again after
## moving 'setFrom' function into a separated module (or package)
# - warn: {lhs: "Set.fromList (a ^.. b)", rhs: "a ^. setFrom b"}
- extensions:
- name: ["MagicHash"]
- modules:
- {name: ["Control.Monad.Combinators"], as: "Comb"}
- {name: ["Control.Monad.Combinators.Expr"], as: "CombExpr"}
- {name: ["Control.Monad.Combinators.NonEmpty"], as: "CombNE"}
- {name: ["Data.Map"], as: "Map"}
- {name: ["Data.Set"], as: "Set"}
- {name: ["Data.Text.Prettyprint.Doc", "Data.Text.Prettyprint.Doc.Minicute"], as: "PP"}
- {name: ["Minicute.Parser.Lexer"], as: "L"}
- {name: ["Minicute.Parser.Parser"], as: "P"}
- functions:
- {name: "unsafePerformIO", within: []}
- {name: "unsafeDupablePerformIO", within: []}