gbwey/predicate-typed

FMap duplicates error in the display tree

Closed this issue · 1 comments

Here is an example where the Error errmsg node is duplicated

pu @(If (Id == 4) (20 >> Failt _ "errmsg") 'True <$> Id) [1..7]
[Error errmsg] If 'False True | If 'False True | If 'False True | If [True]
├─P Id [1,2,3,4,5,6,7]
├─True If 'False True
│ ├─False 1 == 4
│ │ ├─P Id 1
│ │ └─P '4
│ └─True 'True
├─True If 'False True
│ ├─False 2 == 4
│ │ ├─P Id 2
│ │ └─P '4
│ └─True 'True
├─True If 'False True
│ ├─False 3 == 4
│ │ ├─P Id 3
│ │ └─P '4
│ └─True 'True
└─[Error errmsg] If [True]
├─True 4 == 4
│ ├─P Id 4
│ └─P '4
├─[Error errmsg] 20
│ ├─P '20
│ └─[Error errmsg]
└─[Error errmsg] 20
├─P '20
└─[Error errmsg]
Fail "errmsg"

fixed in commit e8db0f8 by inlining 'If' statement errors.