mirror of
https://github.com/Lysxia/first-class-families.git
synced 2024-10-27 03:49:57 +03:00
Fix Filter to not take exponential time
This commit is contained in:
parent
e6949099c3
commit
4113cb1607
@ -100,9 +100,9 @@ type instance Eval (ConcatMap f lst) = Eval (Concat (Eval (Map f lst)))
|
||||
data Filter :: (a -> Exp Bool) -> [a] -> Exp [a]
|
||||
type instance Eval (Filter _p '[]) = '[]
|
||||
type instance Eval (Filter p (a ': as)) =
|
||||
If (Eval (p a))
|
||||
(a ': Eval (Filter p as))
|
||||
(Eval (Filter p as))
|
||||
Eval (If (Eval (p a))
|
||||
('(:) a <$> Filter p as)
|
||||
(Filter p as))
|
||||
|
||||
data Head :: [a] -> Exp (Maybe a)
|
||||
type instance Eval (Head '[]) = 'Nothing
|
||||
|
Loading…
Reference in New Issue
Block a user