From aa65231abf2b2afb563bb8c309926e57d5f6dd14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janis=20Voigtl=C3=A4nder?= Date: Sun, 4 Feb 2024 21:38:39 +0100 Subject: [PATCH 1/4] generalize zip on empty lists hint --- data/hlint.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/data/hlint.yaml b/data/hlint.yaml index 92bd357c..4199c838 100644 --- a/data/hlint.yaml +++ b/data/hlint.yaml @@ -974,7 +974,10 @@ - warn: {lhs: "concat []", rhs: "[]", name: Evaluate} - warn: {lhs: "concatMap f [a]", rhs: f a, name: Evaluate} - warn: {lhs: "concatMap f []", rhs: "[]", name: Evaluate} - - warn: {lhs: "zip [] []", rhs: "[]", name: Evaluate} + - warn: {lhs: "zip [] x", rhs: "[]", name: Evaluate} + - warn: {lhs: "zip x []", rhs: "[]", side: notEq x [], note: IncreasesLaziness, name: Evaluate} + - warn: {lhs: "zipWith f [] x", rhs: "[]", name: Evaluate} + - warn: {lhs: "zipWith f x []", rhs: "[]", side: notEq x [], note: IncreasesLaziness, name: Evaluate} - warn: {lhs: const x y, rhs: x, name: Evaluate} - warn: {lhs: any (const False), rhs: const False, note: IncreasesLaziness, name: Evaluate} - warn: {lhs: all (const True), rhs: const True, note: IncreasesLaziness, name: Evaluate} @@ -1306,6 +1309,8 @@ - warn: {lhs: "atomicModifyIORef' a (\\ v -> (b v, ()))", rhs: "atomicModifyIORef'_ a b"} - warn: {lhs: "null (intersect a b)", rhs: "disjoint a b"} - warn: {lhs: "[minBound .. maxBound]", rhs: "enumerate"} + - warn: {lhs: "zipFrom x []", rhs: "[]", name: Evaluate} + - warn: {lhs: "zipWithFrom f x []", rhs: "[]", name: Evaluate} - warn: {lhs: "zipWithFrom (,)", rhs: "zipFrom"} - warn: {lhs: "zip [i..]", rhs: "zipFrom i"} - warn: {lhs: "zipWith f [i..]", rhs: "zipWithFrom f i"} From e67e501129db806c4fc755fde8925dd5e5701578 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janis=20Voigtl=C3=A4nder?= Date: Sun, 4 Feb 2024 22:19:27 +0100 Subject: [PATCH 2/4] escape list brackets in side condition --- data/hlint.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/hlint.yaml b/data/hlint.yaml index 4199c838..927db094 100644 --- a/data/hlint.yaml +++ b/data/hlint.yaml @@ -975,9 +975,9 @@ - warn: {lhs: "concatMap f [a]", rhs: f a, name: Evaluate} - warn: {lhs: "concatMap f []", rhs: "[]", name: Evaluate} - warn: {lhs: "zip [] x", rhs: "[]", name: Evaluate} - - warn: {lhs: "zip x []", rhs: "[]", side: notEq x [], note: IncreasesLaziness, name: Evaluate} + - warn: {lhs: "zip x []", rhs: "[]", side: "notEq x []", note: IncreasesLaziness, name: Evaluate} - warn: {lhs: "zipWith f [] x", rhs: "[]", name: Evaluate} - - warn: {lhs: "zipWith f x []", rhs: "[]", side: notEq x [], note: IncreasesLaziness, name: Evaluate} + - warn: {lhs: "zipWith f x []", rhs: "[]", side: "notEq x []", note: IncreasesLaziness, name: Evaluate} - warn: {lhs: const x y, rhs: x, name: Evaluate} - warn: {lhs: any (const False), rhs: const False, note: IncreasesLaziness, name: Evaluate} - warn: {lhs: all (const True), rhs: const True, note: IncreasesLaziness, name: Evaluate} From d610ce28a83f9f88a4eea24f458a5760d11b37d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janis=20Voigtl=C3=A4nder?= Date: Mon, 5 Feb 2024 08:29:09 +0100 Subject: [PATCH 3/4] refine the use of side conditions --- data/hlint.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/data/hlint.yaml b/data/hlint.yaml index 927db094..82d27fdf 100644 --- a/data/hlint.yaml +++ b/data/hlint.yaml @@ -975,9 +975,11 @@ - warn: {lhs: "concatMap f [a]", rhs: f a, name: Evaluate} - warn: {lhs: "concatMap f []", rhs: "[]", name: Evaluate} - warn: {lhs: "zip [] x", rhs: "[]", name: Evaluate} - - warn: {lhs: "zip x []", rhs: "[]", side: "notEq x []", note: IncreasesLaziness, name: Evaluate} + - warn: {lhs: "zip x []", rhs: "[]", side: isNonEmpty x, name: Evaluate} + - warn: {lhs: "zip x []", rhs: "[]", side: "notEq x [] && not (isNonEmpty x)", note: IncreasesLaziness, name: Evaluate} - warn: {lhs: "zipWith f [] x", rhs: "[]", name: Evaluate} - - warn: {lhs: "zipWith f x []", rhs: "[]", side: "notEq x []", note: IncreasesLaziness, name: Evaluate} + - warn: {lhs: "zipWith f x []", rhs: "[]", side: isNonEmpty x, name: Evaluate} + - warn: {lhs: "zipWith f x []", rhs: "[]", side: "notEq x [] && not (isNonEmpty x)", note: IncreasesLaziness, name: Evaluate} - warn: {lhs: const x y, rhs: x, name: Evaluate} - warn: {lhs: any (const False), rhs: const False, note: IncreasesLaziness, name: Evaluate} - warn: {lhs: all (const True), rhs: const True, note: IncreasesLaziness, name: Evaluate} From b0805d53e4ec84c10adce4dc6985fd5fdfda6040 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Janis=20Voigtl=C3=A4nder?= Date: Mon, 26 Aug 2024 18:46:53 +0200 Subject: [PATCH 4/4] eliminate isNonEmpty conditions --- data/hlint.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/data/hlint.yaml b/data/hlint.yaml index 82d27fdf..927db094 100644 --- a/data/hlint.yaml +++ b/data/hlint.yaml @@ -975,11 +975,9 @@ - warn: {lhs: "concatMap f [a]", rhs: f a, name: Evaluate} - warn: {lhs: "concatMap f []", rhs: "[]", name: Evaluate} - warn: {lhs: "zip [] x", rhs: "[]", name: Evaluate} - - warn: {lhs: "zip x []", rhs: "[]", side: isNonEmpty x, name: Evaluate} - - warn: {lhs: "zip x []", rhs: "[]", side: "notEq x [] && not (isNonEmpty x)", note: IncreasesLaziness, name: Evaluate} + - warn: {lhs: "zip x []", rhs: "[]", side: "notEq x []", note: IncreasesLaziness, name: Evaluate} - warn: {lhs: "zipWith f [] x", rhs: "[]", name: Evaluate} - - warn: {lhs: "zipWith f x []", rhs: "[]", side: isNonEmpty x, name: Evaluate} - - warn: {lhs: "zipWith f x []", rhs: "[]", side: "notEq x [] && not (isNonEmpty x)", note: IncreasesLaziness, name: Evaluate} + - warn: {lhs: "zipWith f x []", rhs: "[]", side: "notEq x []", note: IncreasesLaziness, name: Evaluate} - warn: {lhs: const x y, rhs: x, name: Evaluate} - warn: {lhs: any (const False), rhs: const False, note: IncreasesLaziness, name: Evaluate} - warn: {lhs: all (const True), rhs: const True, note: IncreasesLaziness, name: Evaluate}