haskell / haskell/pretty

Doc 'Eq' instance fails Substitutivity

Open
#57 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Haskell
Stars
75
Forks
32
PR merge metrics
No merged PRs in 30d

Description

Consider the following code:

```haskell
module Main (main) where
import Prelude hiding ((<>))
import Text.PrettyPrint

main :: IO ()
main = do
let s1 = text "if:" $+$ nest 4 (text "pass")
let s2 = text "if:\n pass"
let f = (text "x" <>)

--not following Eq's Substitutivity 'law':
--first is True but second is False
print $ s1 == s2
print $ f s1 == f s2

--examine the values visually:
print $ s1
print $ s2
print $ f s1
print $ f s2
--outputs the following (note extra space in the 3rd):
-- if:
-- pass
-- if:
-- pass
-- xif:
-- pass
-- xif:
-- pass
```

If this is **not** the intended behavior of the various functions involved (<>, $+$, nest, ==), then there is a bug that should be fixed. If this **is** the intended behavior, then the documentation on Eq should alert the reader to the fact that the Substitutivity Law is not followed.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.