diff options
author | Joe Crayne <joe@jerkface.net> | 2019-05-26 00:03:45 -0400 |
---|---|---|
committer | Joe Crayne <joe@jerkface.net> | 2019-05-26 00:03:45 -0400 |
commit | 1595a9ea3ca1080ebf7d060ea28aecf19df8f968 (patch) | |
tree | e1dccea8d7dff7a5fb5166a7e8b0d74ce8f24d4a /SmallRing.hs | |
parent | 27aa69522ca3da4fe04f996eb87a13e295db0f9f (diff) |
Avoid adding redundant points to ring buffer.
Diffstat (limited to 'SmallRing.hs')
-rw-r--r-- | SmallRing.hs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/SmallRing.hs b/SmallRing.hs index d792899..f710393 100644 --- a/SmallRing.hs +++ b/SmallRing.hs | |||
@@ -30,6 +30,12 @@ pushFront a (Give1 f) = Give2 (\g -> f (g a)) | |||
30 | pushFront a (Give2 f) = Give3 (\g -> f (g a)) | 30 | pushFront a (Give2 f) = Give3 (\g -> f (g a)) |
31 | pushFront a (Give3 f) = f $ \b c _ -> Give3 $ \g -> g a b c | 31 | pushFront a (Give3 f) = f $ \b c _ -> Give3 $ \g -> g a b c |
32 | 32 | ||
33 | front :: Giver a -> Maybe a | ||
34 | front Give0 = Nothing | ||
35 | front (Give1 f) = f Just | ||
36 | front (Give2 g) = g (\x _ -> Just x) | ||
37 | front (Give3 h) = h (\x _ _ -> Just x) | ||
38 | |||
33 | take3 :: (a -> a -> a -> b) -> Giver a -> Maybe b | 39 | take3 :: (a -> a -> a -> b) -> Giver a -> Maybe b |
34 | take3 f (Give3 g) = Just (g f) | 40 | take3 f (Give3 g) = Just (g f) |
35 | take3 _ _ = Nothing | 41 | take3 _ _ = Nothing |