From d2f4ebcb4615d079d6ac79cf3649531d10388206 Mon Sep 17 00:00:00 2001 From: Jake Wheat Date: Thu, 11 Jan 2024 13:51:48 +0000 Subject: [PATCH] remote now unused combinators file --- Language/SQL/SimpleSQL/Combinators.hs | 117 -------------------------- 1 file changed, 117 deletions(-) delete mode 100644 Language/SQL/SimpleSQL/Combinators.hs diff --git a/Language/SQL/SimpleSQL/Combinators.hs b/Language/SQL/SimpleSQL/Combinators.hs deleted file mode 100644 index 6c9e178..0000000 --- a/Language/SQL/SimpleSQL/Combinators.hs +++ /dev/null @@ -1,117 +0,0 @@ - --- | This module contains some generic combinators used in the --- parser. None of the parsing which relies on the local lexers is --- in this module. Some of these combinators have been taken from --- other parser combinator libraries other than Parsec. - -module Language.SQL.SimpleSQL.Combinators - (optionSuffix - ,() - ,() - ,() - ,(<$$>) - ,(<$$$>) - ,(<$$$$>) - ,(<$$$$$>) - ) where - -import Control.Applicative ((<**>)) -import Text.Parsec (option,many) -import Text.Parsec.String (GenParser) - -{- -a possible issue with the option suffix is that it enforces left -associativity when chaining it recursively. Have to review -all these uses and figure out if any should be right associative -instead, and create an alternative suffix parser - -This function style is not good, and should be replaced with chain and - which has a different type --} - -optionSuffix :: (a -> GenParser t s a) -> a -> GenParser t s a -optionSuffix p a = option a (p a) - - -{- -parses an optional postfix element and applies its result to its left -hand result, taken from uu-parsinglib - -TODO: make sure the precedence higher than <|> and lower than the -other operators so it can be used nicely --} - -() :: GenParser t s a -> GenParser t s (a -> a) -> GenParser t s a -p q = p <**> option id q - - -{- -Help with left factored parsers. <$$> is like an analogy with <**>: - -f <$> a <*> b - -is like - -a <**> (b <$$> f) - -f <$> a <*> b <*> c - -is like - -a <**> (b <**> (c <$$$> f)) --} - -(<$$>) :: Applicative f => - f b -> (a -> b -> c) -> f (a -> c) -(<$$>) pa c = pa <**> pure (flip c) - -(<$$$>) :: Applicative f => - f c -> (a -> b -> c -> t) -> f (b -> a -> t) -p <$$$> c = p <**> pure (flip3 c) - -(<$$$$>) :: Applicative f => - f d -> (a -> b -> c -> d -> t) -> f (c -> b -> a -> t) -p <$$$$> c = p <**> pure (flip4 c) - -(<$$$$$>) :: Applicative f => - f e -> (a -> b -> c -> d -> e -> t) -> f (d -> c -> b -> a -> t) -p <$$$$$> c = p <**> pure (flip5 c) - -{- -Surely no-one would write code like this seriously? - - -composing suffix parsers, not sure about the name. This is used to add -a second or more suffix parser contingent on the first suffix parser -succeeding. --} - -() :: GenParser t s (a -> a) -> GenParser t s (a -> a) -> GenParser t s (a -> a) -() pa pb = (.) `c` pa <*> option id pb - -- todo: fix this mess - where c = (<$>) . flip - - --- 0 to many repeated applications of suffix parser - -() :: GenParser t s a -> GenParser t s (a -> a) -> GenParser t s a -p q = foldr ($) <$> p <*> (reverse <$> many q) - - -{- -These are to help with left factored parsers: - -a <**> (b <**> (c <**> pure (flip3 ctor))) - -Not sure the names are correct, but they follow a pattern with flip -a <**> (b <**> pure (flip ctor)) --} - -flip3 :: (a -> b -> c -> t) -> c -> b -> a -> t -flip3 f a b c = f c b a - -flip4 :: (a -> b -> c -> d -> t) -> d -> c -> b -> a -> t -flip4 f a b c d = f d c b a - -flip5 :: (a -> b -> c -> d -> e -> t) -> e -> d -> c -> b -> a -> t -flip5 f a b c d e = f e d c b a