diff options
Diffstat (limited to 'testsuite/tests/lib/Regex/regex003.hs')
-rw-r--r-- | testsuite/tests/lib/Regex/regex003.hs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/testsuite/tests/lib/Regex/regex003.hs b/testsuite/tests/lib/Regex/regex003.hs new file mode 100644 index 0000000000..0aa51fe7aa --- /dev/null +++ b/testsuite/tests/lib/Regex/regex003.hs @@ -0,0 +1,43 @@ +import Text.Regex.Base +import Text.Regex.Posix(Regex,(=~),(=~~)) -- or DFA or PCRE or PosixRE +import qualified Data.ByteString.Char8 as B(ByteString,pack) + +-- Show mixing of ByteString and String as well as polymorphism: + +main = let x :: (RegexContext Regex String target) => target + x = ("abaca" =~ B.pack "(.)a") + x' :: (RegexContext Regex String target,Monad m) => m target + x' = ("abaca" =~~ "(.)a") + y :: (RegexContext Regex B.ByteString target) => target + y = (B.pack "abaca" =~ "(.)a") + y' :: (RegexContext Regex B.ByteString target,Monad m) => m target + y' = (B.pack "abaca" =~~ B.pack "(.)a") + in do print (x :: Bool) + print (x :: Int) + print (x :: [MatchArray]) + print (x' :: Maybe (String,String,String,[String])) + print (y :: Bool) + print (y :: Int) + print (y :: [MatchArray]) + print (y' :: Maybe (B.ByteString,B.ByteString,B.ByteString,[B.ByteString])) + +{- Output is, except for replacing Full with DFA (which has no capture) +True +2 +[array (0,1) [(0,(1,2)),(1,(1,1))],array (0,1) [(0,(3,2)),(1,(3,1))]] +Just ("a","ba","ca",["b"]) +True +2 +[array (0,1) [(0,(1,2)),(1,(1,1))],array (0,1) [(0,(3,2)),(1,(3,1))]] +Just ("a","ba","ca",["b"]) +-} +{- The output for DFA is +True +2 +[array (0,0) [(0,(1,2))],array (0,0) [(0,(3,2))]] +Just ("a","ba","ca",[]) +True +2 +[array (0,0) [(0,(1,2))],array (0,0) [(0,(3,2))]] +Just ("a","ba","ca",[]) +-} |